Assistance with Feat: Legendary Size from In the Company of Dragons Expanded
I am trying to program the following feat from the Pathfinder sourcebook In the Company of Dragons Expanded. I have the base In the Company of Dragons source already purchased and need some assistance on how I can add this as a feat. The material also says there is an adjustment in HL for Dracomorphosis but I can only assume it was removed at some point because I can't find it.
Legendary Size (Dragon) You are a dragon of truly prodigious size. Prerequisite: dracomorphosis class feature, character level 8th Benefit: Increase your effective level by 2 when determining the effects of dracomorphosis. If you have at least 20 class levels in classes with the draconic hero archetype, gain the Colossal size and other benefits of the draconic exemplar’s great wyrm class feature. If you have at least 20 draconic exemplar class levels, gain an additional +2 size bonus to Strength and Constitution. How do I grant the Great Wyrm [cRPDraGrea] class special ability at level 20? I'm using the following but its throwing an error. if (HeroLev >= 20) then perform hero.assign[cRPDraGrea] endif |
I have created the following Eval Script to attempt to replace the existing variable hero.child[xRPDraDrac].field[abValue5].value = maximum(ExIncr1,HeroIncr1)
Generally when I click Test it seems to work ok but if I add levels or restart Hero Lab the feat stops working again. Can anyone assist? First, 401, Index 1 ~if we've been disabled, get out now doneif (tagis[Helper.SpcDisable] <> 0) var ExLev as number var HeroLev as number var HeroLev1 as number var ExIncr1 as number var HeroIncr1 as number ExLev = 0 call DracHero if (#levelcount[DraconicE] >= 1) then ExLev = #levelcount[DraconicE]+2 hero.childfound[cRPDraDra4].field[xExtraLev].value += 2 elseif (HeroLev >= 1) then HeroLev1 = HeroLev+2 hero.childfound[cRPDraDra5].field[xExtraLev].value += 2 endif ExIncr1 = round(ExLev/4,0,-1) if (HeroLev <= 19) then HeroIncr1 = round(HeroLev1/5,0,-1) elseif (HeroLev >= 20) then HeroIncr1 = 5 perform hero.childfound[abCITDraHGrtWyrm].assign[Helper.ShowSpec] endif ~debug "ExLev = " & ExLev ~debug "HeroLev = " & HeroLev ~ store for later script use hero.child[xRPDraDrac].field[abValue5].value = maximum(ExIncr1,HeroIncr1) |
Why have this script running ultra-early? At First/401? Normally, a script that's just altering xExtraLev I'd put in the pre-levels phase, and then use normal timings - I prefer multiples of 10000.
Where is the HeroLev variable set? The xRPDraDrac pick - what phase & priority does its script to set abValue5 run? |
I'm not sure where HeroLev is set. I copied this eval script from the In the Company of Dragons, altered it a bit and then set it to run immediately after the original. The xExtraLev is just for the text of the power, the actual mechanics come from whats stored in abValue5 and the other variables based on it.
The Ability, Dracomorphosis (Functional) is xRPDraDrac. It have EvalScripts running at Pre-Attributes/10000, Post-Attributes/10000, First/400, First/401, Post-Attributes/9000 |
In case it helps, the line in the script that reads
Quote:
Open the editor, and in the "General" tabs there is a "*Procedure" tab. Hit the "New Copy" button and choose the entry for "DracHero" in that list, and you will be able to read the script in the new copy you make. You can't edit the original DracHero procedure used by the Company of Dragons data files, but sometimes it is helpful to see the code being used. |
Quote:
Here is the Procedure DracHero ~ calculate Draconic Hero level var HeroLev as number HeroLev = 0 if (hero.tagis[ClassVary.arAlcDraco] <> 0) then HeroLev += #levelcount[Alchemist] endif if (hero.tagis[ClassVary.arBbnDraco] <> 0) then HeroLev += #levelcount[Barbarian] endif if (hero.tagis[ClassVary.arBrdDraco] <> 0) then HeroLev += #levelcount[Bard] endif if (hero.tagis[ClassVary.arCavDraco] <> 0) then HeroLev += #levelcount[Cavalier] endif if (hero.tagis[ClassVary.arClrDraco] <> 0) then HeroLev += #levelcount[Cleric] endif if (hero.tagis[ClassVary.arDrdDraco] <> 0) then HeroLev += #levelcount[Druid] endif if (hero.tagis[ClassVary.arFtrDraco] <> 0) then HeroLev += #levelcount[Fighter] endif if (hero.tagis[ClassVary.arGunDraco] <> 0) then HeroLev += #levelcount[Gunsling] endif if (hero.tagis[ClassVary.arInqDraco] <> 0) then HeroLev += #levelcount[Inquisito] endif if (hero.tagis[ClassVary.arMagDraco] <> 0) then HeroLev += #levelcount[Magus] endif if (hero.tagis[ClassVary.arMnkDraco] <> 0) then HeroLev += #levelcount[Monk] endif if (hero.tagis[ClassVary.arOraDraco] <> 0) then HeroLev += #levelcount[Oracle] endif if (hero.tagis[ClassVary.arPalDraco] <> 0) then HeroLev += #levelcount[Paladin] endif if (hero.tagis[ClassVary.arRgrDraco] <> 0) then HeroLev += #levelcount[Ranger] endif if (hero.tagis[ClassVary.arRogDraco] <> 0) then HeroLev += #levelcount[Rogue] endif if (hero.tagis[ClassVary.arSorDraco] <> 0) then HeroLev += #levelcount[Sorcerer] endif if (hero.tagis[ClassVary.arSumDraco] <> 0) then HeroLev += #levelcount[Summoner] endif if (hero.tagis[ClassVary.arTasDraco] <> 0) then HeroLev += #levelcount[Taskshape] endif if (hero.tagis[ClassVary.arWitDraco] <> 0) then HeroLev += #levelcount[Witch] endif if (hero.tagis[ClassVary.arWizDraco] <> 0) then HeroLev += #levelcount[Wizard] endif |
I'm running this eval script at First/400/2 because I want it to run and replace the values set but the original eval script for ITC.
The racial size increase only works when I click "Test Now!", if I close Hero Lab or quick reload the files the size increase no longer functions. However the attributes increase adjust correctly. I really appreciate any assistance. ~ determine new dracomorphosis increment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~if we've been disabled, get out now doneif (tagis[Helper.SpcDisable] <> 0) var ExLev as number var HeroLev as number var HeroLev1 as number var ExIncr1 as number var HeroIncr1 as number var incr as number ExLev = 0 call DracHero if (#levelcount[DraconicE] >= 1) then ExLev = #levelcount[DraconicE]+2 hero.childfound[cRPDraDra4].field[xExtraLev].value += 2 elseif (HeroLev >= 1) then HeroLev1 = HeroLev+2 hero.childfound[cRPDraDra5].field[xExtraLev].value += 2 endif ExIncr1 = round(ExLev/4,0,-1) if (HeroLev <= 19) then HeroIncr1 = round(HeroLev1/5,0,-1) elseif (HeroLev >= 20) then HeroIncr1 = 5 perform hero.childfound[abCITDraHGrtWyrm].assign[Helper.ShowSpec] endif ~debug "ExLev = " & ExLev ~debug "HeroLev = " & HeroLev ~ store for later script use hero.child[xRPDraDrac].field[abValue5].value = maximum(ExIncr1,HeroIncr1) field[abValue5].value = maximum(ExIncr1,HeroIncr1) incr = hero.child[xRPDraDrac].field[abValue5].value |
Let's go back to the basics - are you working in the right folder? In the main HL window, in the Tools menu, choose Explore Folders, and then Game System Data Folder. That'll open a folder from your computer - is the file you're creating this content in within that folder (and not a sub-folder)? Having a file somewhere else is something that can create the symptom of things only working after test now - HL only loads files from the correct folder when loading, but the test now operation just patches that one item into the database, and where the file it's from is located isn't checked.
|
wow, this is weird. I did the HL coding for the original In the Company of Dragons, sooo long ago now (2016, according my files.)
I have my original source code, if you need to see any bits. (It's been a while, don't remember too much about HL coding these days.) |
I am coming at this from a different angle now. I found that the Dracomorphosis (functional) ability is actually assigned at the Race Taninim and I have been trying to attack it from a feat perspective. My though is to create an alternate racial trait that will replace the core Dracomorphosis ability with a custom one I create that allows for alterations from the expanded book.
|
This is what I have now but I'm not sure how to write the if statement for has levels in Draconic Exemplar & also has a specific feat so I keep getting errors at the moment.
~ determine dracomorphosis increment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~if we've been disabled, get out now doneif (tagis[Helper.SpcDisable] <> 0) ~ size bump every 4 levels for Draconic Exemplar ~ size bump every 5 levels for Draconic Hero ~ whichever one is higher takes effect, no stacking var ExLev as number var HeroLev as number var ExIncr as number var HeroIncr as number ExLev = #levelcount[DraconicE] call DracHero ExIncr = round(ExLev/4,0,-1) HeroIncr = round(HeroLev/5,0,-1) ~ Legendary Size feat, adjust Draconic Exemplar & Draconic Hero levels by +2 for size increase if (ExLev >= 1, hero.childlives[fCITTanLegSize] = 1) then ExIncr = round(ExLev+2/4,0,-1) hero.childfound[cRPDraDra4].field[xExtraLev].value += 2 elseif (ExLev >= 20, hero.childlives[fCITTanLegSize] = 1) then hero.child[aSTR].field[aNormMod].value += 2 hero.child[aCON].field[aNormMod].value += 2 elseif (HeroLev >= 1, hero.childlives[fCITTanLegSize] = 1) then hero.childfound[cRPDraDra5].field[xExtraLev].value += 2 elseif (HeroLev <= 19, hero.childlives[fCITTanLegSize] = 1) then HeroIncr = round(HeroLev+2/5,0,-1) elseif (HeroLev >= 20, hero.childlives[fCITTanLegSize] = 1) then HeroIncr = 5 perform hero.childfound[abCITDraHGrtWyrm].assign[Helper.ShowSpec] endif ~debug "ExLev = " & ExLev ~debug "HeroLev = " & HeroLev ~ store for later script use field[abValue5].value = maximum(ExIncr,HeroIncr) ~debug "incr = " & field[abValue5].value |
Still needing some help... I need an if statement for if the character has a specific class and also has a specific feat then do stuff.
Can anyone assist? ~ Draconic Exemplar level +2 for Dracomorphosis if ((hero.childlives[fCITTanLegSize] <> 0) + (hero.childlives[cHelpDra] <> 0) = 2) then ExIncr = round(ExLev+2/4,0,-1) hero.childfound[cRPDraDra4].field[xExtraLev].value += 2 endif |
#levelcount[DraconicE] > 0
#hasfeat[fCITTanLegSize] <> 0 Combining them: if (#levelcount[DraconicE] > 0) then if (#hasfeat[fCITTanLegSize] <> 0) then ~make your changes here endif endif |
Thank you. Is it possible to have an EvalScript that adjusts the value of an external ability?
For example, I have an evalScript that runs from the Ability [abCITDracExp] and I'd like it to update to the field.abValue5 on Ability [xRPDraDrac]. This doesn't seem to do the trick though. hero.child[xRPDraDrac].field[abValue5].value = maximum(ExIncr1,HeroIncr1) |
I have this script running First/400 on an Alternate Racial Trait once I noticed Dracomorphosis was bootstrapped to the race and not the class.
Nothing happens when you add the feat though, it's very frustrating. ~ determine legendary size dracomorphosis increment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~if we've been disabled, get out now doneif (tagis[Helper.SpcDisable] <> 0) ~ size bump every 4 levels for Draconic Exemplar ~ size bump every 5 levels for Draconic Hero ~ whichever one is higher takes effect, no stacking var ExLev as number var HeroLev as number var HeroLev1 as number var ExIncr as number var HeroIncr as number var LegSize as number ~ Legendary Feat +2 level variable LegSize = 0 if (#hasfeat[fCITTanLegSize] <> 0) then LegSize = 2 endif call DracHeroExp HeroLev1 = HeroLev+LegSize ExLev = #levelcount[DraconicE]+LegSize ExIncr = round(ExLev/4,0,-1) HeroIncr = round(HeroLev1/5,0,-1) ~ Begin Legendary Size adjustments ~~ Draconic Exemplar level +2 for Dracomorphosis if (ExLev <> 0) then if (#hasfeat[fCITTanLegSize] <> 0) then hero.childfound[cRPDraDra4].field[xExtraLev].value += 2 endif endif ~~ Draconic Exemplar level +2 Str & Con for Great Wyrm if (ExLev >= 20) then if (#hasfeat[fCITTanLegSize] <> 0) then hero.child[aSTR].field[aNormMod].value += 2 hero.child[aCON].field[aNormMod].value += 2 endif endif ~ Draconic Hero levels by +2 for Dracomorphosis if (HeroLev >=1) then if (#hasfeat[fCITTanLegSize] <> 0) then hero.childfound[cRPDraDra5].field[xExtraLev].value += 2 endif endif ~ Draconic Hero level 20 gets Great Wyrm ability if (HeroLev >= 20) then if (#hasfeat[fCITTanLegSize] <> 0) then HeroIncr = 5 perform hero.childfound[abCITDraHGrtWyrm].assign[Helper.ShowSpec] endif endif ~ End of Legendary Size adjustments ~debug "ExLev = " & ExLev ~debug "HeroLev = " & HeroLev ~ store for later script use field[abValue5].value = maximum(ExIncr,HeroIncr) ~debug "incr = " & field[abValue5].value |
All times are GMT -8. The time now is 09:36 PM. |
Powered by vBulletin® - Copyright ©2000 - 2024, vBulletin Solutions, Inc.
wolflair.com copyright ©1998-2016 Lone Wolf Development, Inc. View our Privacy Policy here.