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>