View Single Post
Senko
Senior Member
 
Join Date: Jan 2014
Posts: 262

Old January 12th, 2020, 01:10 AM
I'm playing around with herolab and the tutorials trying to learn how to use scripting. I'm currently trying to duplicate the sorcerer crossblooded archetype to the arcanist. I have it mostly working by copying and learning from the sorcerer scripts (created a custom ability by copying the sorc one, script told to look at and use it). Even better I think I understand how the script works and what its telling the archetype to look at to reference things plus I was able to modify the archetype so unlike a sorcerer you don't class skills or bonus spells as per the arcanist. The only thing I haven't got it doing is allowing a second bloodline to choose abilities from.

There's two scripts in the blood arcanist archetype that seem linked to bloodlines


doneif (islinkage[varies] = 0)
~Timing is important here, this must run before First/500, as that's when
~ bootstrap conditionals for things bootstrapped by Sorcerer bloodlines run
var i as number
for i = 1 to linkage[varies].field[cTotalLev].value
perform hero.assign[ClsAblLive.Sorcerer]
next

and


perform hero.findchild[BaseCustSp,"abCategory.SorBlood & CustTaken.cHelpArc"].setfocus

doneif (state.isfocus = 0)

perform focus.delete[ClassSkill.?]
perform focus.delete[fInclude.?]
perform focus.assign[NoBonusSpl.NoSpells]

so I'm thinking I somehow need to modify one or both of these scripts via something further in this eval script in bloodline power choice.

~ we'll generate the list of bloodline powers regardless of whether
~ we've reached the correct level or not. That way, a user can plan
~ out their entire progression while still 1st level

~ search through all the arcanist class specials on the hero, making
~ sure that each one was bootstrapped by a bloodline, as opposed to
~ being bootstrapped by the class or by an archetype

~ also make sure that we're only choosing those whose assigned level is
~ at or lower than our own
foreach pick in hero from BaseClSpec where "SpecSource.cHelpArc & Helper.FirstCopy & !Helper.ArcBloodAr"
if (eachpick.isroot <> 0) then
if (eachpick.root.tagexpr[component.BaseCustSp & CustTaken.cHelpArc] <> 0) then
if (eachpick.field[xWhen].value <= field[xWhen].value) then
field[usrCandid1].text = splice(field[usrCandid1].text,eachpick.tagids[thingid.?],"|")
endif
endif
endif
nexteach

~ as long as our candidate isn't empty, add the component to the
~ candidate expression
if (field[usrCandid1].isempty = 0) then
field[usrCandid1].text = "component.BaseClSpec & Helper.FirstCopy & (" & field[usrCandid1].text & ")"
endif

I'm just hoping someone can confirm or deny this so I don't waste my time adjusting things here when its the wrong spot please.
Senko is offline   #1 Reply With Quote