![]() |
The Black Wyrm's Lair Terms of Use |
![]() ![]() ![]() ![]() |
![]() |
![]()
Post
#1
|
|
Forum Member Posts: 522 Joined: 12-April 06 From: Netherlands ![]() |
Hello everyone.
I am attempting to create a kit, but I run into a problem and I would like to hear some opinions. I was thinking that since you cannot change the layout of the functional buttons, you may be able to change their behaviour. So I figured, since the bard already has a thieving button for his pick pocket skill, would it be possible to give a bardkit the ability to pick locks and remove traps? 1. I have attempted to add an OPEN_LOCKS line into the bard 2da right under his pick pocket ability, but I'm guessing that that never gets read by the game. 2. Next I tried to give him thieving points with shadowkeeper to see it that worked in any way. But when I detected a trap with another thief I simply could not get the trap disable button with the bard. So I guess my current conclusion is that the bardic thieving button only works for pick pocketing. Now that means that it must have some of its natural capabilities disabled by the game (the pick locks and remove traps ability). Therefore, I wonder if anyone has ever looked further into the game to see how these abilities are removed. Since it is possible to disable a functional button using an op-code, maybe part of the thieving has also been disabled with an op-code and can be undisabed (reenabled). It is also possible that thieving for thieves is added by thieving points, whereas the thieving for other classes (monk, ranger, bard) is added through a 2da. It does not seem possible to have a non-thief class to get thieving points per level, so perhaps additional thieving skills are impossible for the other classes as well. Lastly I think I will probably be able to fix the usability of a bardkit as a semi-thief by giving it a few knocks per day and a few find traps spells per day as kit ability. That makes him all-purpose in the end, but too powerful due to 100% successrate for the skills. Is it possible to have the spells efficiency scale per level (knock and find traps are only effective for trap difficulty of 50% or less for instance, to be increased upon level ups)? I'm guessing that the answer is no, but perhaps I'm wrong. Related to this, is it possible to re-memorise the casting of a spell after it has been used but without requiring sleep? That way I only need to give 1 knock and 1 find traps as kit ability, but that still does not give it proper scalability (such that it does not become overpowered compared to a normal thief who has scalability of the thieving skills). Thanks for the responses. |
|
|
![]() |
![]()
Post
#2
|
|
Forum Member Posts: 522 Joined: 12-April 06 From: Netherlands ![]() |
Thanks for the tips. I will look into the possibilities.
Spells don't have a 'failure' measure though, so trap detection like the cleric spell is always 100%. That is kind of irritating. I got my class changing to work again. It is relatively simple: IF Global("LR","GLOBAL",1) Kit(Player1,LRBARDKIT) THEN RESPONSE #100 ChangeClass(Player1,THIEF) ActionOverride(Player1,AddKit(LRTHIEFKIT)) SetGlobal("LR","GLOBAL",2) END IF Global("LR","GLOBAL",1) Kit(Player1,LRTHIEFKIT) THEN RESPONSE #100 ChangeClass(Player1,BARD) ActionOverride(Player1,AddKit(LRBARDKIT)) SetGlobal("LR","GLOBAL",2) END The bardkit gets an innate that when tripped sets the global to 1 and trips the first portion of the script to change into a thief. The thiefkit is hidden and gets an innate too that when tripped sets the global to 1 and trips the second portion of the script to change back. The problem why it did not work for a while is because this does not work for some stupid reason: If the innate sets the global to 0 and I use the block: IF Global("LR","GLOBAL",0) Kit(Player1,LRBARDKIT) THEN RESPONSE #100 ChangeClass(Player1,THIEF) ActionOverride(Player1,AddKit(LRTHIEFKIT)) SetGlobal("LR","GLOBAL",1) END The block is not executed. Weird. If the global does not exist, the block does execute. So the cure was to set the global to a different value that 0 (as above I just use 1 and 2 instead of 0 and 1) such that the block can activate. The block fires instantaneous. The kit addition is also instantaneous. The F1-F12 buttons do not change if you still have the character selected but if you unselect and reselect the buttons also change, so it is a minor hamperment but it does work the way it should. Btw: I cannot add bonus abilities to the CLAB anymore if I keep shifting ingame. That is because any bonuses of previous levels will be applied when you change to a class. That means a simple bonus like +1AC will be re-added when you shift from one class to the next and back again multiple times. Cheating-galore. But anyway, I only needed my bardsongchange to be in the CLAB and my "gain shifting innate" in the 2da, which is fine since it does not give any innate-duplication problems. Similarly, the hidden thiefkit has a CLAB that only contains the innate to shift back. I can always add into my scripts the removal of an innate skill like a thief trap setting of course. That should be no big problem. I did a test and you can make a mage-kit that does not show up under the mage kit list since it's full and then you basically slap in a fighterkit pickable by all races who has no bonuses and such (I suggest also mage-like proficiencies) and then set a block that simply changes this fighterkit to change your class and kit into the desired mage-kit. Who says protagonists cannot have a custom mage kit? IF OnCreation() Global("LRSHIFT","GLOBAL",0) Kit(Player1,LRFIGHTERKIT) THEN RESPONSE #100 ChangeClass(Player1,MAGE) ActionOverride(Player1,AddKit(LRMAGEKIT)) SetGlobal("LRSHIFT","GLOBAL",1) END Note: now the global does work since "LRSHIFT" does not exist yet in a new game. Extremely simple! Am I reinventing the wheel here because stuff like this I cannot find anywhere in a kitcreation readme or across the boards. Edit reason. Fixed the ClassChange -> ChangeClass issue. Additionally, as discussed below, this will also work in a more general fashion: IF OnCreation() Global("LRSHIFT","LOCALS",0) Kit(Myself,LRFIGHTERKIT) THEN RESPONSE #100 ChangeClass(Myself,MAGE) ActionOverride(Myself,AddKit(LRMAGEKIT)) SetGlobal("LRSHIFT","LOCALS",1) END This post has been edited by lroumen: Nov 3 2009, 08:53 AM |
|
|
![]()
Post
#3
|
|
Forum Member Posts: 80 Joined: 25-January 07 From: We call it Swamp Pit, you call it Finland. ![]() |
Hmm, intresting.
![]() IF Just so you know, this will probably fail if you'll install the Refinements mod, and it would be better if you made the script like this:Global("LR",1) Kit(Player1,LRBARDKIT) THEN RESPONSE #100 ClassChange(Player1,THIEF) ActionOverride(Player1,AddKit(LRTHIEFKIT)) SetGlobal("LR",2) END IF Global("LR",1) Kit(Player1,LRTHIEFKIT) THEN RESPONSE #100 ClassChange(Player1,BARD) ActionOverride(Player1,AddKit(LRBARDKIT)) SetGlobal("LR",2) END CODE IF As the LR = 0, would be the normal state, while the 1 and 2 would be the class and kit changing mode... so the initiate just needs to set the LR to 1 or 2. Global("LR","LOCALS",1) THEN RESPONSE #100 ChangeClass(Myself,THIEF) ActionOverride(Myself,AddKit(LRTHIEFKIT)) SetGlobal("LR","LOCALS",0) END IF Global("LR","LOCALS",2) THEN RESPONSE #100 ChangeClass(Myself,BARD) ActionOverride(Myself1,AddKit(LRBARDKIT)) SetGlobal("LR","LOCALS",0) END ![]() This post has been edited by Jarno Mikkola: Nov 3 2009, 07:37 AM |
|
|
![]()
Post
#4
|
|
Forum Member Posts: 522 Joined: 12-April 06 From: Netherlands ![]() |
Hmm, intresting. ![]() Just so you know, this will probably fail if you'll install the Refinements mod, and it would be better if you made the script like this: As the LR = 0, would be the normal state, while the 1 and 2 would be the class and kit changing mode... so the initiate just needs to set the LR to 1 or 2. ![]() Thanks for the suggestion. Indeed it does not really matter which number the LR global is and for nicety if might as well be 0. It's just that using 0 as a trigger did not work, so I kind of forgot that I could do it the other way around. Question though, why would it not work with refinements? Is it because I swap classes a lot causing conceptual incompatibilities? |
|
|
![]() ![]() |
![]() |
Lo-Fi Version | Time is now: 22nd August 2025 - 02:08 PM |