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?