It's always bothered me a bit that there's a separate entry for each Age Category for each Dragon. Oh, I understand totally why, especially with the Encounter Builder so you can find the dragons by Challenge Rating and such.
Still, it bugged me. So when I found myself creating another dragon in the Editor, I decided to do this differently. I created a generic Age Category under Racial Special with an Array-Based menu:
- Choose -
Wyrmling
Very young
Young
Juvenile
Young adult
Adult
Mature Adult
Old
Very old
Ancient
Wyrm
Great wyrm
There's a single Eval Rule at First/100 to display the message "Must choose an age category" if one hasn't been chosen.
Then, for the good stuff:
Eval Script #1
First (Users)/100; Index 1
Eval Script #2:
Render/9999; Index 2
Okay, that's the Racial Ability that you add on to the dragon. Now, back to the dragon itself. adding the following Eval Script at First (Users)/101 will set the abValue of the breath weapon, set the bonus feats value (rFeat), and set the Damage Reduction values as they go up in age category:
This Eval Script will set the skill values dependent on the age value
Pre-Levels (Users)/100
The final bit is the spell-like abilities, feats, and racial abilities that come in at different age categories. Instead of trying to play around with various custom tags and such, the Age Category actually increases the HD by two every time it goes up. So, you can use a boot strap condition (below) to determine whether it shows the feat/ability or not.
First/500
That's it. The "default" dragon is all the wyrmling stats, which the Age Category choice will update. Now, instead of creating an entry for each age category, you can create one dragon entry then choose the age category on the Backgrounds tab. Sure, it means the dragons will only show up in the Encounter Builder at their minimum CR, but I can live with that.
Any thoughts/suggestions?
Still, it bugged me. So when I found myself creating another dragon in the Editor, I decided to do this differently. I created a generic Age Category under Racial Special with an Array-Based menu:
- Choose -
Wyrmling
Very young
Young
Juvenile
Young adult
Adult
Mature Adult
Old
Very old
Ancient
Wyrm
Great wyrm
There's a single Eval Rule at First/100 to display the message "Must choose an age category" if one hasn't been chosen.
Code:
validif (field[usrIndex].value <> 0)
Then, for the good stuff:
Eval Script #1
First (Users)/100; Index 1
Code:
~ Set's dragon's size, CR, hit dice, natural armor, and ability scores based on Age Category
doneif (field[usrIndex].value = 0)
var sizemod as number
var hDice as number
var nArm as number
var mScore as number
var strSc as number
var dexSc as number
var conSc as number
perform hero.findchild[BaseRace].setfocus
doneif (state.isfocus = 0)
if (field[usrIndex].value = 12) then
sizemod = 5
focus.field[rCR].value += 16
elseif (field[usrIndex].value = 11) then
sizemod = 4
focus.field[rCR].value += 14
elseif (field[usrIndex].value = 10) then
sizemod = 4
focus.field[rCR].value += 13
elseif (field[usrIndex].value = 9) then
sizemod = 4
focus.field[rCR].value += 12
elseif (field[usrIndex].value = 8) then
sizemod = 4
focus.field[rCR].value += 11
elseif (field[usrIndex].value = 7) then
sizemod = 3
focus.field[rCR].value += 9
elseif (field[usrIndex].value = 6) then
sizemod = 3
focus.field[rCR].value += 8
elseif (field[usrIndex].value = 5) then
sizemod = 3
focus.field[rCR].value += 7
elseif (field[usrIndex].value = 4) then
sizemod = 2
focus.field[rCR].value += 5
elseif (field[usrIndex].value = 3) then
sizemod = 2
focus.field[rCR].value += 4
elseif (field[usrIndex].value = 2) then
sizemod = 1
focus.field[rCR].value += 2
endif
call SizeChange
hDice = (field[usrIndex].value - 1) * 2
nArm = (field[usrIndex].value - 1) * 3
if (field[usrIndex].value = 2) then
strSc = 4
elseif (field[usrIndex].value >= 3) then
strSc = (field[usrIndex].value + 1) * 2
else
strSc = 0
endif
dexSc = field[usrIndex].value + 1
dexSc = round(dexSc/3, 0, -1)
dexSc = dexSc * 2
if (field[usrIndex].value >= 3) then
conSc = field[usrIndex].value + 2
conSc = round(conSc/2, 0, -1)
conSc = conSc * 2
else
conSc = (field[usrIndex].value - 1) * 2
endif
mScore = round(field[usrIndex].value /2, 0, -1) * 2
focus.field[rHitDice].value += hDice
focus.field[rAC].value += nArm
focus.field[rSTR].value += strSc
focus.field[rDEX].value -= dexSc
focus.field[rCON].value += conSc
focus.field[rINT].value += mScore
focus.field[rWIS].value += mScore
focus.field[rCHA].value += mScore
Eval Script #2:
Render/9999; Index 2
Code:
~ appends Age Category to livename of dragon; sets Frightful Presence range
doneif (field[usrIndex].value = 0)
hero.findchild[BaseRace].field[livename].text = hero.findchild[BaseRace].field[thingname].text & ", " & field[usrSelect].text
hero.childfound[raFrightPr].field[abRange].value = field[usrIndex].value * 30
Okay, that's the Racial Ability that you add on to the dragon. Now, back to the dragon itself. adding the following Eval Script at First (Users)/101 will set the abValue of the breath weapon, set the bonus feats value (rFeat), and set the Damage Reduction values as they go up in age category:
Code:
doneif (hero.childfound[raFRAgeCat].field[usrIndex].value = 0)
hero.childfound[raDrBreath].field[abValue].value = hero.childfound[raFRAgeCat].field[usrIndex].value
field[rFeat].value -= round(field[rHitDice].value /2, 0, 1)
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 11) then
perform hero.childfound[xDamRdMag].assign[Value.20]
elseif (hero.childfound[raFRAgeCat].field[usrIndex].value >= 9) then
perform hero.childfound[xDamRdMag].assign[Value.15]
elseif (hero.childfound[raFRAgeCat].field[usrIndex].value >= 7) then
perform hero.childfound[xDamRdMag].assign[Value.10]
elseif (hero.childfound[raFRAgeCat].field[usrIndex].value >= 5) then
perform hero.childfound[xDamRdMag].assign[Value.5]
endif
This Eval Script will set the skill values dependent on the age value
Pre-Levels (Users)/100
Code:
#skillinnate[skBluff] += field[rHitDice].value
#skillinnate[skDiplo] += field[rHitDice].value
#skillinnate[skDisguise] += field[rHitDice].value
#skillinnate[skKnowLoc] += field[rHitDice].value
#skillinnate[skPercep] += field[rHitDice].value
#skillinnate[skSenseMot] += field[rHitDice].value
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 2) then
#skillinnate[skSpellcr] += field[rHitDice].value
endif
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 4) then
#skillinnate[skKnowArca] += field[rHitDice].value
endif
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 6) then
#skillinnate[skKnowHist] += field[rHitDice].value
endif
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 8) then
#skillinnate[skKnowNobl] += field[rHitDice].value
endif
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 10) then
#skillinnate[skKnowRel] += field[rHitDice].value
endif
if (hero.childfound[raFRAgeCat].field[usrIndex].value >= 12) then
#skillinnate[skKnowPlan] += field[rHitDice].value
endif
The final bit is the spell-like abilities, feats, and racial abilities that come in at different age categories. Instead of trying to play around with various custom tags and such, the Age Category actually increases the HD by two every time it goes up. So, you can use a boot strap condition (below) to determine whether it shows the feat/ability or not.
First/500
Code:
fieldval:rHitDice >= 22
That's it. The "default" dragon is all the wyrmling stats, which the Age Category choice will update. Now, instead of creating an entry for each age category, you can create one dragon entry then choose the age category on the Backgrounds tab. Sure, it means the dragons will only show up in the Encounter Builder at their minimum CR, but I can live with that.
Any thoughts/suggestions?