Senior Member
Volunteer Data File Contributor
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729
|
Nice! Yeah I did that for a FGG class with spellcasting being an option. I got it work but was never 100% happy with it.
Hero Lab Resources: Pathfinder - d20pfsrd and Pathfinder Pack Setup 3.5 D&D (d20) - Community Server Setup 5E D&D - Community Server Setup Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources. Created by the community for the community - Realm Works kickstarter backer (Alpha Wolf) and Beta tester.- d20 HL package volunteer editor. |
#11 |
Senior Member
Join Date: Mar 2007
Location: Muskegon, MI
Posts: 2,975
|
I'm going to post what I did in a bit so that anyone can figure out what the heck they need to do ... I might create a procedure to take care of a lot of the difficult work.
|
#12 |
Senior Member
Volunteer Data File Contributor
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729
|
Quote:
The issue goes back to though without this procedure documented somewhere it will be hard to find. Unless a person can think of a class where it is used. Its my only one big issue still. A well maintained wiki or document center with macros, scripts, tags, and procedures documented somewhere. Even just the idea is what happens (heaven for bid) the plane carrying Aaron and Mathias goes done after GenCon. Who is the backup? I am thinking tons of information, logic and design are currently ONLY held in there heads. Hero Lab Resources: Pathfinder - d20pfsrd and Pathfinder Pack Setup 3.5 D&D (d20) - Community Server Setup 5E D&D - Community Server Setup Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources. Created by the community for the community - Realm Works kickstarter backer (Alpha Wolf) and Beta tester.- d20 HL package volunteer editor. |
|
#13 |
Senior Member
Join Date: Mar 2007
Location: Muskegon, MI
Posts: 2,975
|
A well documented wiki? Crazy talk! I've considered trying to start a community documentation ... but I really really suck at documentation ... But a Google site or a wiki or something wouldn't be bad to consider ...
|
#14 |
Senior Member
Join Date: Mar 2007
Location: Muskegon, MI
Posts: 2,975
|
OK Here's what I've got for Procedures, before you add these to the CB I am submitting them with the Vigilante so they should end up in the general data files. But I would like comments if you can see any adjustments that need to be made.
Code:
<procedure id="CustMagic" context="pick"><![CDATA[ ~This sets up a class to become a spellcaster from either a Custom Ability ~or a class ability. ~ sClass.? is the tag of the casting class that's spells you will use ~ CasterType.? is the tag for the type of caster: SponKnow (Bard), SponBook (Arcanist), ~ SponAll (Warmage), MemBook (Wizard), MemAll(Cleric) ~ CasterSrc.? determines whether you're: Arcane, Divine, Alchem, Psychic ~ maxspell is your maximum spell level, if left blank defaults to 9 ~ SplAttr is the id of the attribute for your spellcasting: aINT, aWIS, aCHA (usually) ~ MaxSplAttr is the id of attribute for your max spell level, defaults to SplAttr var maxspell as number perform state.clearfocus if (tagis[component.BaseCustSp] <> 0) then perform linkage[table].setfocus elseif (root.tagis[component.BaseCustSp] <> 0) then perform root.linkage[table].setfocus elseif (tagis[component.BaseVary] <> 0) then perform linkage[varies].setfocus endif doneif (state.isfocus = 0) if (tagis[CastInfini.0] <> 0) then focus.field[cCastMax].arrayvalue[0] += 99 endif focus.field[cSplMaxLvl].value = maxspell perform focus.pushtags[CastInfini.?] perform focus.pushtags[sClass.?] perform focus.pushtags[CasterType.?] perform focus.pushtags[CasterSrc.?] perform focus.pushtags[SplAttr.?] perform focus.pushtags[MaxSplAttr.?] perform focus.assign[Hero.Caster] if (tagis[CasterType.SpontBook] + tagis[CasterType.MemBook] <> 0) then perform focus.assign[Hero.Spellbook] endif if (tagis[component.BaseCustSp] <> 0) then focus.field[cCasterLev].value = field[xTotalLev].value elseif (root.tagis[component.BaseCustSp] <> 0) then focus.field[cCasterLev].value = field[xAllLev].value elseif (tagis[component.BaseVary] <> 0) then focus.field[cCasterLev].value += linkage[varies].field[cTotalLev].value endif]]></procedure> Code:
<procedure id="AdjSpellsC" context="pick"><![CDATA[ ~ This procedure adjusts yours spells cast/known/memorized at each level ~ You only need to adjust the variables for the levels you want to adjust ~ Do an if/then/else statement to set each based on class levels ~ ========== Number of Spells Cast at Each Level ============= var cast0 as number var cast1 as number var cast2 as number var cast3 as number var cast4 as number var cast5 as number var cast6 as number var cast7 as number var cast8 as number var cast9 as number ~ ========== Number of Spells Known at Each Level ============= var know0 as number var know1 as number var know2 as number var know3 as number var know4 as number var know5 as number var know6 as number var know7 as number var know8 as number var know9 as number ~ ========== Number of Spells Memorized at Each Level ============= var mem0 as number var mem1 as number var mem2 as number var mem3 as number var mem4 as number var mem5 as number var mem6 as number var mem7 as number var mem8 as number var mem9 as number perform state.clearfocus if (tagis[component.BaseCustSp] <> 0) then perform linkage[table].setfocus elseif (root.tagis[component.BaseCustSp] <> 0) then perform root.linkage[table].setfocus elseif (tagis[component.BaseVary] <> 0) perform linkage[varies].setfocus endif doneif (state.isfocus = 0) focus.field[cCastMax].arrayvalue[0] += cast0 focus.field[cCastMax].arrayvalue[1] += cast1 focus.field[cCastMax].arrayvalue[2] += cast2 focus.field[cCastMax].arrayvalue[3] += cast3 focus.field[cCastMax].arrayvalue[4] += cast4 focus.field[cCastMax].arrayvalue[5] += cast5 focus.field[cCastMax].arrayvalue[6] += cast6 focus.field[cCastMax].arrayvalue[7] += cast7 focus.field[cCastMax].arrayvalue[8] += cast8 focus.field[cCastMax].arrayvalue[9] += cast9 focus.field[cKnowMax].arrayvalue[0] += know0 focus.field[cKnowMax].arrayvalue[1] += know1 focus.field[cKnowMax].arrayvalue[2] += know2 focus.field[cKnowMax].arrayvalue[3] += know3 focus.field[cKnowMax].arrayvalue[4] += know4 focus.field[cKnowMax].arrayvalue[5] += know5 focus.field[cKnowMax].arrayvalue[6] += know6 focus.field[cKnowMax].arrayvalue[7] += know7 focus.field[cKnowMax].arrayvalue[8] += know8 focus.field[cKnowMax].arrayvalue[9] += know9 focus.field[cMemMax].arrayvalue[0] += mem0 focus.field[cMemMax].arrayvalue[1] += mem1 focus.field[cMemMax].arrayvalue[2] += mem2 focus.field[cMemMax].arrayvalue[3] += mem3 focus.field[cMemMax].arrayvalue[4] += mem4 focus.field[cMemMax].arrayvalue[5] += mem5 focus.field[cMemMax].arrayvalue[6] += mem6 focus.field[cMemMax].arrayvalue[7] += mem7 focus.field[cMemMax].arrayvalue[8] += mem8 focus.field[cMemMax].arrayvalue[9] += mem9]]></procedure> Last edited by AndrewD2; June 21st, 2015 at 12:14 PM. |
#15 |
Senior Member
Join Date: Mar 2007
Location: Muskegon, MI
Posts: 2,975
|
And example of them in use:
Add the required tags to the Class Special/Custom Ability CasterType.?, CasterSrc.?, sClass.?, SplAttr.?, MaxSplAttr.?, CastInfini.? (currently only works for 0) Code:
var maxspell as number maxspell = 1 call CustMagic var cast1 as number var know0 as number var know1 as number cast1 += 2 if (field[xAllLev].value = 1) then know0 += 4 know1 += 2 elseif (field[xAllLev].value = 2) then know0 += 5 know1 += 3 elseif (field[xAllLev].value = 3) then know0 += 6 know1 += 4 elseif (field[xAllLev].value = 4) then know0 += 6 know1 += 4 elseif (field[xAllLev].value = 5) then know0 += 6 know1 += 4 elseif (field[xAllLev].value = 6) then know0 += 6 know1 += 4 elseif (field[xAllLev].value = 7) then know0 += 6 know1 += 5 elseif (field[xAllLev].value = 8) then know0 += 6 know1 += 5 elseif (field[xAllLev].value = 9) then know0 += 6 know1 += 5 elseif (field[xAllLev].value = 10) then know0 += 6 know1 += 5 elseif (field[xAllLev].value >= 11) then know0 += 6 know1 += 6 endif call AdjSpellsC Last edited by AndrewD2; June 21st, 2015 at 12:17 PM. |
#16 |
Senior Member
Join Date: Nov 2011
Location: South Riding, VA
Posts: 841
|
That is awesome. I have been trying to figure something like this for the noble class for Freeport. I has strated to implement by making some specialized secondary classes.
|
#17 |
Senior Member
Join Date: Mar 2007
Location: Muskegon, MI
Posts: 2,975
|
I spent 3 hours on the initial code alone just for getting 0, 1 level spells. I'll need to modify these for archetypes too. As I know of at least 2 archetypes I need to do this with. I might do it for feats too ...
EDIT: modified for archetypes EDIT: I should probably do some work for secondary spells too EDIT: So I modified it again, this time simplifying it. Instead of typing in the tags in the eval script, you just add them to the special and this script will move them to the class helper. It also makes some things simpler as you don't have to remember to assign Hero.Spellbook, or Hero.Arcane/Divine/Psychic/etc. Last edited by AndrewD2; June 21st, 2015 at 12:20 PM. |
#18 |
Senior Member
Join Date: May 2013
Posts: 240
|
Bump! Just wondering how this is coming along.
|
#19 |
Junior Member
Join Date: Apr 2015
Posts: 24
|
Also bump! Also wondering if this is going to be a go soon as I want to play test it.
|
#20 |
Thread Tools | |
Display Modes | |
|
|