Senior Member
Join Date: Apr 2010
Posts: 152
|
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. Code:
validif (field[usrIndex].value <> 0) 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 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 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 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 First/500 Code:
fieldval:rHitDice >= 22 Any thoughts/suggestions? Matt Droz Community material (Forgotten Realms & Non-SRD/Retro) |
#1 |
Senior Member
Join Date: Nov 2011
Location: South Riding, VA
Posts: 841
|
Looks interesting Matt. I did something similar for the community bestiary (I wanted to implement some abilities and a template that depended on dragon age category). The dragon is the "base" dragon, and the user selects the age cat from a configurable. The configurable assigns a tag. Depending on what the tag is the base dragon gets its various abilities.
Last edited by frumple; June 16th, 2014 at 09:23 AM. |
#2 |
Senior Member
Join Date: Oct 2011
Posts: 6,793
|
Clever! I did something similar at one point for the 3.5 community files.
|
#3 |
Senior Member
Join Date: Jul 2012
Posts: 416
|
So how woudl these show up in the encounter builder? Are you basing everything on the Adult age, and then modifying from there? in which case, it would show up at the CR of an Adult dragon? Then once added, you'd go in and adjust the age?
I don't see a problem with that, specifically because when dealing with dragons, you've usually got an idea that you're going to have a given dragon in the encounter, and aren't hunting by CR to find an appropriate enemy. More just a curiosity aspect. So this does bring up a shortcoming in the encounter builder though. I understand, all it does is parse through the .stock files to compile it's database of options, but for future feature expansions of it, it would be great if it supported single base + variations. The dragon age is just a single example, but there are all the other templates and such that aren't really all that usable via the encounter builder. Having a category tree would be amazing - though I'm not sure the best way to categorize them. Obvious major Type groups like undead, outsiders, dragons, etc, then the sub groups below each would be different depending on the major group. Currently, the ability to filter down strictly by text search is a little limited. |
#4 |
Senior Member
Join Date: Apr 2010
Posts: 152
|
Quote:
Quote:
The other great thing about the Encounter Builder as it stands now, if you build your own .STOCK portfolio with statted out NPCs, it will load them in. This is great for searching through the portfolios I'm trying to build for Forgotten Realms NPCs. Matt Droz Community material (Forgotten Realms & Non-SRD/Retro) |
||
#5 |
|
|