• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Adding Classes, Races, Monssters, Traits, Feats, and more!

Coding: for changing damage dice on Earth Blast. Same coding as Monk's unarmed strike but the weapon tag is replaced with wEarthBlas and the damages are different.
~ Get our earth blast pick, delete the damage tag from it, and assign
~ a new damage tag.
var dice as string
perform hero.child[wEarthBlas].delete[wMain.?]
if (field[xAllLev].value < 5) then
perform hero.child[wEarthBlas].assign[wMain.1d6_5]
dice = "1d6"
elseif (field[xAllLev].value < 10) then
perform hero.child[wEarthBlas].assign[wMain.2d6_104]
dice = "2d6"
elseif (field[xAllLev].value < 15) then
perform hero.child[wEarthBlas].assign[wMain.3d6_8]
dice = "3d6"
elseif (field[xAllLev].value < 20) then
perform hero.child[wEarthBlas].assign[wMain.4d6_106]
dice = "4d6"
else
perform hero.child[wEarthBlas].assign[wMain.5d6_106]
dice = "5d6"
endif

field[livename].text = field[name].text & " (" & dice & ")"

There is no error in the code (no error message comes up now, anyway) but I'm noticing two things: first is that the damage isn't scaling. Second is that when I bootstrapped the weapon onto this special, it made 5 copies of it for use...not sure if it's BECAUSE of the bootstrap or if that's what the code was doing and I just didn't know it cause I hadn't bootstrapped the weapon yet.

As for the Side-step Secret Eval Scripts, there were 3 parts: The doneif section saying that if an option hadn't been selective, don't show up. The last part was about using CHA for AC. The middle part, on the other hand, was about using CHA for the Reflex save - so that's the part I used. This is the code:
hero.child[svRef].field[svAttr].value = #attrmod[aCHA]
hero.child[svRef].field[svAttrName].text = "(CHARISMA)"
I replaced the attribute specific fields with CON and CONSTITUTION but the reflex isn't changing. Did I get some spelling wrong or something? :<

As for all the seeds: they have specific uses and the only calculation specific things I could do with them would be saves. The DCs are rolled and none of them roll against armor or what-not. All that's rolled is the enemy's reflex and I can attach a reflex save DC to each of them without adding attacks. So there will only be an attack for the blasts (seeing as only those will be used as normal damage. Some do dmg but they aren't going to be used regularly and if they are they can't be modified in any way. Straight 2d6 or 4d6 (create rubble or rift respectively).
EDIT: final paragraph's wording was weird: The only thing they player can roll is a skill check and situational damage (create rubble and rift) - for those that will roll damage, it isn't changed or modified in any way. It's a flat 2d6 or 4d6. So the only thing that will be calculated FOR the player would be any saves the targeted creature has to save against (in most cases, reflex). There's an option already there that attaches save DCs based off a selected attribute so I don't have to mess with attacks. It's all right there.

Also, what I meant by "5 copies of it for use" was that, in the panel displaying weapons (with Unarmed Strike there) there are now 5 new weapon attacks, all of which are Earth Blast 1d6. Changing the earthbender class level does not scale the damage nor increase or decrease the number of attacks.
 
Last edited:
Coding: for changing damage dice on Earth Blast. Same coding as Monk's unarmed strike but the weapon tag is replaced with wEarthBlas and the damages are different.
~ Get our earth blast pick, delete the damage tag from it, and assign
~ a new damage tag.
var dice as string
perform hero.child[wEarthBlas].delete[wMain.?]
if (field[xAllLev].value < 5) then
perform hero.child[wEarthBlas].assign[wMain.1d6_5]
dice = "1d6"
elseif (field[xAllLev].value < 10) then
perform hero.child[wEarthBlas].assign[wMain.2d6_104]
dice = "2d6"
elseif (field[xAllLev].value < 15) then
perform hero.child[wEarthBlas].assign[wMain.3d6_8]
dice = "3d6"
elseif (field[xAllLev].value < 20) then
perform hero.child[wEarthBlas].assign[wMain.4d6_106]
dice = "4d6"
else
perform hero.child[wEarthBlas].assign[wMain.5d6_106]
dice = "5d6"
endif

field[livename].text = field[name].text & " (" & dice & ")"

There is no error in the code (no error message comes up now, anyway) but I'm noticing two things: first is that the damage isn't scaling. Second is that when I bootstrapped the weapon onto this special, it made 5 copies of it for use...not sure if it's BECAUSE of the bootstrap or if that's what the code was doing and I just didn't know it cause I hadn't bootstrapped the weapon yet.

What phase and priority are you running that script at? xAllLev is set in the Levels phase, so you'll want to set the phase to Post-Levels at the earliest. That would be my guess why the damage isn't bumping up as you increase level.

For the duplication, I suspect you bootstrapped the class special 5 times (so that it would show an entry in the class special abilities at each level the damage changed, like the monk ability does) and that you had the weapon bootstrapped to the class ability. Each of those class abilities is bringing along their own copy of the weapon. To fix that, either bootstrap the weapon to something that is only added once to a hero (like the Earth Blast custom ability, if that is one of the seeds, or the class helper if it is not) OR make the weapon unique (which could cause it's own problems, I recommend the former option).

As for the Side-step Secret Eval Scripts, there were 3 parts: The doneif section saying that if an option hadn't been selective, don't show up. The last part was about using CHA for AC. The middle part, on the other hand, was about using CHA for the Reflex save - so that's the part I used. This is the code:
hero.child[svRef].field[svAttr].value = #attrmod[aCHA]
hero.child[svRef].field[svAttrName].text = "(CHARISMA)"
I replaced the attribute specific fields with CON and CONSTITUTION but the reflex isn't changing. Did I get some spelling wrong or something? :<

I would guess it is a timing problem. What phase and priority have you set your script at? The script on sidestep secret runs at Post Attr 20100, so that's probably where it should be.

As for all the seeds: they have specific uses and the only calculation specific things I could do with them would be saves. The DCs are rolled and none of them roll against armor or what-not. All that's rolled is the enemy's reflex and I can attach a reflex save DC to each of them without adding attacks. So there will only be an attack for the blasts (seeing as only those will be used as normal damage. Some do dmg but they aren't going to be used regularly and if they are they can't be modified in any way. Straight 2d6 or 4d6 (create rubble or rift respectively).
EDIT: final paragraph's wording was weird: The only thing they player can roll is a skill check and situational damage (create rubble and rift) - for those that will roll damage, it isn't changed or modified in any way. It's a flat 2d6 or 4d6. So the only thing that will be calculated FOR the player would be any saves the targeted creature has to save against (in most cases, reflex). There's an option already there that attaches save DCs based off a selected attribute so I don't have to mess with attacks. It's all right there.

Also, what I meant by "5 copies of it for use" was that, in the panel displaying weapons (with Unarmed Strike there) there are now 5 new weapon attacks, all of which are Earth Blast 1d6. Changing the earthbender class level does not scale the damage nor increase or decrease the number of attacks.

Ah, so each class will automatically get "Element Blast" as a class ability, that's not a seed they need to select?
 
1: Yes, I had it so that I got a damage 'increase' at 1st, 5th, 10th, 15th, and 20th, via special abilities on the class tab. Once I got rid of 4 of them it went back down to only 1 copy. Realized that just before I checked back here. The problem is that if I take off the 4 class specials after the 1st application, it doesn't show up on the class specials list on the class tab of a character - except once, of course, saying Earth Blast 1d6. Doesn't go up to 2d6, 3d6, or 3d6 and the dmg is unchanged (didn't expect it to change, though). The timing was already at Final Phase and I went ahead and put it at Validation Phase but it still isn't changing. Priority is at 10000.

2: It's alrdy at Post Att 20100 - I look at timing when I copy down scripts because it's, well, important.

3: Yup - if you look at the classes on the page you'll see that each bender gets 'base seeds' automatically. Earthbender gets Earth Blast and Move Rock. Waterbenders get Water Blast, Melt/Freeze, and Manipulate, etc. So the blasts are, in fact, automatic :D
 
1: Yes, I had it so that I got a damage 'increase' at 1st, 5th, 10th, 15th, and 20th, via special abilities on the class tab. Once I got rid of 4 of them it went back down to only 1 copy. Realized that just before I checked back here. The problem is that if I take off the 4 class specials after the 1st application, it doesn't show up on the class specials list on the class tab of a character - except once, of course, saying Earth Blast 1d6. Doesn't go up to 2d6, 3d6, or 3d6 and the dmg is unchanged (didn't expect it to change, though). The timing was already at Final Phase and I went ahead and put it at Validation Phase but it still isn't changing. Priority is at 10000.

Might be too late. Try it in Post Levels.

Did you move the weapon bootstrap elsewhere?

2: It's alrdy at Post Att 20100 - I look at timing when I copy down scripts because it's, well, important.

Hmm, let me confirm that Sidestep secret is working first, then I'll get back to you.
 
Sidestep secret does work. It does have an After... thingamajigger-I-Don't-Know-The-Terminology-For that refers to the "Calc tCMD" script. I wouldn't think that'd matter though. I suppose I could take a look at your file to see if I could ferret it out.
 
Well, sadly changing it to Post-Levels didn't affect it. Currently the bootstrap for the weapon works like this: I created the weapon and made it a helper. I then went to the Class Special and made a bootstrap for it that ties it to the special. I also apply the Unarmed Strike scripts here in order to increase the damage (the problem might be that I'm both scripting it here and also bootstrapping it here. But I'm not sure where else I could move those two?) I then apply the Class Special in the class itself at level 1 only since applying it any more duplicates the blast attack.

As for the thingamajigger - sure. While you're at it you might play with the blast some, too?

I just recently put Waterbender, Airbender, and Firebender in as well, updating them to as far as I've gotten Earthbender (without the seeds, though. Those would take a while more.) After AAAALLLL of this is finally done, the movement speeds will still need to be added (climb, ski, and fly - not to mention the Firebender's resistances to fire and cold.) Not sure what to do about skiing. Also, my brother is trying to flesh out the campaign and diversify the nations, so we have 4 races for each nation (apparently named after chinese words he looked up) as well as languages for them and 4 race specific traits. I believe that's everything in the file. Linked it to this post.
 

Attachments

Earth Blast is a timing issue, you had it at Post Level (Users) 10000, the Unarmed strike eval script ran at Post Level 5000. Post Level (Users) and Post Level are not the same phase. I switched it over to the original timing and the damage on the weapon is bumped up appropriately. Also, I suggested you bootstrap the weapon on the Class Helper rather than the class ability to avoid that duplication, so I made that quick change (and restored the multiple entries to show advancing damage in the class tab).

The Head-on Defense was also a timing issue, you had it set to Pre-Attributes (Users) 20100, and at that point Attributes haven't been calculated (thus the "pre"). You'd set svAttr = to 0 (because no attribute modifiers are calculated that early), and then later on it was being overwritten when svAttr is first calculated. Changed to the correct phase (Post Attr 20100), it functions.

A couple quick pointers:
1 - I noticed you have a lot of text on the Class Helper, but that can't be seen by the user. You want to put that description text on the Class Levels instead.

2 - It's a good idea to preface any eval script you make with a check to see if that class ability is disabled by a tag, like so:

doneif (tagis[Helper.SpcDisable] <> 0)

That will stop anything after it from happening if the disable tag is applied.
 

Attachments

And now, to bed for me. I don't know where you rest your head wolfang237, but it's 2 AM here. We're pushing through a release tomorrow (hopefully) so I probably won't have much time to answer things tomorrow, sorry.
 
Okay...so now I know that user phases and normal phases aren't the same.
Also, I feel a little stupid for not thinking of bootstrapping the attack to the class rather than the special... And also for mixing up the prefixes 'pre' and 'post'... trust me, what you said makes complete sense. So all in all, I was just missing a few basics that I should get used to catching.

Thanks for all your help. Things left on to-do list: bender class movement types, firebender resistances, firebender firestorm, feats, applying the rest of the seeds, and then it's on to the non-bending classes, beasts, and weapons.
 
Last edited:
No problemo. Keep on asking and I'll keep on answering. Everybody's got to start somewhere, and you seem to be off to a good start just by trying things out, copying things, and being willing to ask for assistance (that's how I learned myself, through experimentation, imitation, and help from others on the forums).
 
Well next on the list: how do I add movement types and then what would be the scripts to increase them? I expect we could copy a class special that adds, say, burrow or climb and then use the scripts that monks have to increase their base speed and try to apply that to the movement speed?

Also I assume we can't add a new kind of movement speed (ski)? So should we switch it to Swim?
 
Branch Runner adds to Climb speed, you can look to that as an example,

Movement speeds are just abilities, you can copy one and make a new movement speed if you like. In my personal opinion though, Waterbenders should get a swim speed. Seems appropriate.
 
Well think about this thematically: they got most of this from the anime and, in the anime, the waterbenders never really swam much...and think about it: if you're swimming in the north or south poles, you're probably dead. I think skiing actually does make a lot more sense but I feel like it can't be a true movement speed: you have to move to ski, so what happens to the player on a full-round action or if they just take a standard action or something. I feel like there's holes in having a ski speed and I feel it should be more like the airbender's air scooter ability: make a new seed or add it to an existing one?

And then, as you said, I guess we'd give them a swim speed instead.
 
Well, in the show it is clear that waterbenders can change the state of water (usually freezing it into ice, although also melting ice). That implies to me that they have control over the temperature of the water, which means they could swim in frigid water while heating it up around them.

Temp's kind of beside the point anyway, if you can move water, can't you have it push you around and swim like that? Also, I remember seeing Aang's previous waterbender incarnation surfing with waterbending on an ice-board.
 
In that case skiing is more like just a super hero freeze-skiing ability so falling into the water won't matter with a block of ice underneath you. Also, I don't think waterbenders can control the temp of water: they are never able to make steam, only control it. Thus my theory is they control the density of the molecules (mash em together into a solid form and you get ice - this seems like a temperature decrease while it's actually just limiting the kinetic force of the molecules in the mass of water and then shrinking the negative space - this would invariably cut the amount of energy the molecules have (which is what determines 'temperature': low energy = low temperature, high energy = high temperature). Firebenders, on the other hand, would be able to affect heat directly which is how they can spontaneously create fire in mid-air: heat it to a point of combustion. It's also why they could probably snuff out fire sources.

Well, if you get into the chemistry of bending you end up overlapping a lot (for example, to increase the size of a flame wouldn't you have to apply oxygen? But isn't the airbenders' field? That's my theory, anyway: waterbenders deal with density and the kinetic energy, firebenders with heat.
EDIT: Also, by increasing the kinetic energy of water molecules won't create steam since as the negative space between molecules increases, the chance that they collide decreases (ie even if they move faster that doesn't mean it creates the friction that's normally applied to energy and thus increase the actual temperature). Sadly it doesn't work in reverse like water to ice.
 
Last edited:
Hokay, so I'm using these scripts currently to add and change climb speeds to the hero:
field[abValue].value += hero.child[Speed].field[tSpeedMod].value + (hero.tagcount[Ability.cEarClimb] - 2) * 10

#value[xClimb] = maximum(field[abValue].value, #value[xClimb])
Timing is in the Final Phase at 11000.
This one uses basic math - in the first paragraph you take the number of class specials applied to the class and subtract 2, then multiply by 10 and apply that to the climb speed bootstrapped to the ability. (I didn't bootstrap it to the class because the hero gets a climb speed at 4, not 1). This orks swimmingly because at 1 class special applied you get a base speed of 30 - 10 = 20 (ie the speed at level 4). Every subsequent application will apply a 10 ft increase up to 60 at the 5th application.

The problem is that it's applying EVERY application of the special regardless of whether or not the hero has reached the level appropriate for the special (let's say the hero is at 4, thus qualifying for the first application and thus giving him 20 climb. If I add more applications to the class table at 6, 8, 12, and 19, it actually accounts for all of those and his climb speed becomes 60). You were saying something about donif prefaces that would disable anything below it if it had a the disabled tag - is there a way I could apply that by putting a preface in the class special saying that if the character wasn't high enough level, it wouldn't apply the script?

EDIT: Also, when I took out the bottom line of the script the Climb speed went away altogether so I assume that's what's applying a climb speed.
EDIT: OH, I think I get the bottom line of the script now: The Field[abValue] is just a value with no categorization. Just a number. The reason why there's isn't a climb speed without the bottom line is because the bottom line takes the Field[abValue] and assigns that value as the [xClimb] value, or the climb speed. The top line isn't even dealing with the climb speed at all! So if I put #value[xClimb] = 30 it would make the climb speed 30, right? So this is a lot like algebra :o
 
Last edited:
So we have to have 3 parts to this script: a line to determine the value, and line that categorizes the outcome as the climb speed, and then a line that disables or enables how many of the Class specials are used in the script... so I think we could probably do it three ways? 1) We could put script in that would address all of the specials in the table from that single script and give them a disabled tag if the player's level wasn't high enough. 2) We could put a script in that wouldn't address all of the specials at once but rather each special individually in itself and give it a disabled tag if necessary that way. 3)I think it should be possible to have just one special at level 4 and have the scripts apply another level of the [cEarClimb] at levels 6, 8, 12, and 19 without adding the special 4 more times on the class table via the class itself. Kinda like... actually... could we use the unarmed strike scripts?

like:
if (field[xAllLev].value > 18) then
#value[xClimb] = 60
elseif (field[xAllLev].value > 11) then
#value[xClimb] = 50
elseif (field[xAllLev].value > 7) then
#value[xClimb] = 40
elseif (field[xAllLev].value > 5) then
#value[xClimb] = 30
elseif (field[xAllLev].value > 3) then
#value[xClimb] = 20
endif
Wouldn't that work?

REPORT: It totally did work!
So the only problem is that speeds aren't specials. There were 'climb' and stuff sure but they weren't the actual speeds and I don't think you can create/edit/delete [x] IDs. Should we just go with swim then?
 
Last edited:
So first of all, you don't need to bootstrap Climb speeds here. Movement types are one of a few specials that is automatically on all heroes (the others being damage resistances and damage reductions).

Basically I think your question boils down to a few parts.

How do I control when a script runs?
When a class has enough levels that the class ability should be gained, that copy gains a Helper.ShowSpec tag. You can check for that with a doneif at the beginning of your eval script, ensuring it doesn't run before the appropriate level. For example, say you have a class called the Sandwitch Bender, and this class has an ability called "PBJ Mastery" and it is bootstrapped at 3rd, 6th, and 9th level.

At 4th level Sandwich bender one copy has Helper.ShowSpec (the one at third), while at 6th level two of them do. So if you add:

doneif (tagis[Helper.ShowSpec] = 0)

As an aside, I usually also include a check to see if something has disabled the class special before doing anything

doneif (tagis[Helper.SpcDisable] <> 0)

How do I make sure the script runs only once when I bootstrap it's class ability multiple times?

Class abilities that are bootstrapped multiple times usually have the first one designated by the Helper.FirstCopy tag. Checking for that will enable you to only run the script on that copy, thus only once

How do I know what level I've reached so that I can know what bonus to apply?
There are a variety of fields on class specials that store how many levels their bootstrapped class has added to them (which is used depends on how things stack), but the most common one you'll use is xTotalLev. You can use a series of if/thens to check level and set the bonuses appropriately.

Or, there is also a mechanism to count how many times a particular special has been bootstrapped, and how many of those have been activated by being sufficiently high level, which is stored in the xCount field. This is important if more than one class is likely to bootstrap an ability (for example, Barbarians and Rogues both get trap sense).
 
Wow, totally ninjaed by over an hour. Guess I should research and formulate replies a little faster.
 
Here's how I'd probably approach it.

Code:
~ Set our listname based on xIndex
var climbspeed as number
climbspeed = (field[xIndex].value + 1) * 10
field[listname].text = "Climb (" & climbspeed & ")"

~ Only do the rest if we're high enough level
doneif (tagis[Helper.ShowSpec] = 0)

~ Only do the rest if we're not disabled
doneif (tagis[Helper.SpcDisable] <> 0)

~ Only do the rest if we're the first copy
doneif (tagis[Helper.FirstCopy] = 0)

~ We'll just use the same variable from before, overwritting it's value
climbspeed = (field[xCount].value + 1) * 10

~ Now we'll set our climb speed equal to what is granted by this ability, or it's current value, whichever is higher
hero.child[xClimb].field[abValue].value = maximum(hero.child[xClimb].field[abValue].value, climbspeed)
 
Back
Top