Junior Member
Join Date: Sep 2018
Posts: 27
|
Basically, I'm trying to (as an archetype) implement a pathfinder version of the Paladin variant classes from the D&D3.5 Unearthed Arcana pg53 (Paladin of Freedom, Paladin of Tyranny, and Paladin of Destruction). Each has the same spell list as the core Paladin... except for about five swapped spells each. Making three new spell lists each for only a single class would be an extremely inefficient way to accomplish that.
Man, wouldn't this be a nice (if performance hungry) shortcut to programmatically generating a new spell list that is just a few spells different from an existing one? !!!DOES NOT WORK!!! Code:
foreach thing in BaseSpell where "sClass.cHelpPal" var comp as number comp = 0 comp += compare(eachthing.idstring, "spProtfro1") comp += compare(eachthing.idstring, "spDiscLie3") comp += compare(eachthing.idstring, "spMagiCir3") comp += compare(eachthing.idstring, "spDeatWar4") comp += compare(eachthing.idstring, "spDispCha4") if (comp < 1) then perform eachthing.assign[sClass.cHelpPalFree] endif nexteach perform <spProtLaw1_thing>.assign[sClass.cHelpPalFree] perform <spMagiLaw3_thing>.assign[sClass.cHelpPalFree] perform <spRemoCur3_thing>.assign[sClass.cHelpPalFree] perform <spDispLaw4_thing>.assign[sClass.cHelpPalFree] perform <spFreeMov4_thing>.assign[sClass.cHelpPalFree] Of course, the thing context doesn't have an assign action. And spells only become picks on a hero after they have been selected... which would defeat the purpose. Really this is exactly the kind of thing that I would expect *Extend to be able to do. It would be as simple as making extend things take a tag expression, component id, tag group, and tag id then implementing the above "foreach thing" logic with those values as input. If you could also refine the results with further with the tag expression (say to implement exceptions) it would be perfect. Then I would only need to add the 5 new spells manually to the spell list and the rest would auto-generate when the game system loads, which is pretty reasonable. As it stands I can't see much use for *Extend. I can:
There are how many spells out there? Yeaaah... there really has got to be a better way. But of the two, duplicating the spell things is a _lot_ less (but still far too much) work. Are there any alternatives here? Last edited by JadedDragoon; September 10th, 2018 at 05:44 PM. |
#1 |
Senior Member
Join Date: Sep 2014
Posts: 105
|
Have you looked at the add spells to spell list adjustment?
It uses this eval script to add spells to a spell list for a class. Code:
~ If we're not enabled, get out now doneif (field[pIsOn].value = 0) doneif (field[pChosen].ischosen = 0) perform field[pChosen].chosen.pulltags[ClsAllowSp.?] doneif (field[pChosen2].ischosen = 0) perform field[pChosen2].chosen.pushtags[ClsAllowSp.?] Here is the opposite adjustment that I just made for myself. Code:
~ If we're not enabled, get out now doneif (field[pIsOn].value = 0) doneif (field[pChosen].ischosen = 0) perform field[pChosen].chosen.pulltags[ClsDenySp.?] doneif (field[pChosen2].ischosen = 0) perform field[pChosen2].chosen.pushtags[ClsDenySp.?] In this case you just need to use Code:
perform field[<insert paladin class helper ID>].chosen.pushtags[ClsAllowSp.<insert spell ID>] perform field[<insert paladin class helper ID>].chosen.pushtags[ClsDenySp.<insert spell ID>] Oh First 20000 index 1 for the timing of the eval scripts. |
#2 |
Junior Member
Join Date: Sep 2018
Posts: 27
|
In the abilities? I think I'm missing something. I'm not sure where I'm supposed to put that script. There's no "cHelpPal" field on the archetype I'm creating. Nor is there one on a hero with the paladin class or the paladin class itself.
Please forgive my noobish-ness. I'm right in the middle of a trial-by-fire/crash-course teaching myself Hero Lab. My understanding of things is gonna be spotty in places. EDIT: I have gone through every single core-class archetype that changes its base class' spell list trying to see how it's done there... only it's not done there. Not a single such archetype appears in the Pathfinder modules I have unlocked. Last edited by JadedDragoon; September 10th, 2018 at 06:35 PM. |
#3 |
Senior Member
Join Date: Sep 2014
Posts: 105
|
You'd put that into an eval script in an ability for the archetype, you'd use the paladin class helper as that's what the archetype is for, and thus the hero will have it on them when you apply the archetype.
Edit: "cHelpPal" would actually show in the hero tags. Last edited by willuwontu; September 10th, 2018 at 06:06 PM. |
#4 |
Junior Member
Join Date: Sep 2018
Posts: 27
|
Code:
Hero Lab was forced to stop compilation after the following errors were detected: Syntax error in 'eval' script for Thing 'abELDKoDRSpells' (Eval Script 'Swap in Paladin of Freedom Spells') on line 2 -> Non-existent field 'cHelpPal' used by script Not to mention, the way the script is written it would be looking for a field on the ability (not the hero) as the context defaults to the pick the script runs from. So, again, I don't understand. |
#5 |
Senior Member
Volunteer Data File Contributor
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729
|
Yeah you really jumped into the deep end here. Those screen shots of the scripts are not compiling because the transitions is totally off.
I would recommend reading the Glossary of Terms for the Editor. Then check out Mathias four articles including the transition one. Archetypes are designed already to modify the class they are linked to. So assuming this archetype has the linked class as Paladin. You don't even need a script to add new spells to the linked class. Find your archetype in the editor. In the top RIGHT corner click on the "Tags" blue button. Then click on "Click to add another tag". In the new text boxes fill in the following: Group id: ClsAllowSp Tag ID: spBurnHan1 Then press "OK" and save your changes. Then Test Now!. In this example your archetype will now add the Burning Hands level 1 spell to the Paladin class. In addition I have added a example .user file to this post. To try and help in your last screen shot. The correct script would be: Code:
perform hero.childfound[cHelpPal].assign[ClsDenySp.spProtFro1] Code:
perform linkage[varies].assign[ClsDenySp.spProtFro1] Hop that helps some... 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. |
#6 |
Junior Member
Join Date: Sep 2018
Posts: 27
|
"derp!" at just adding them as tags. That moment when you realize the reason you can't find the forest is cause you are only looking at the trees.
But yes, the other is some really useful info. The scripts you show are much more like what I was expecting... and the linkage bit looks like it will be super handy in the future. I appreciate it. Jumping in at the deep end is pretty much snafu for me. And I'm okay with that. I'm actually having a blast. And I'm getting a lot done without having to ask for help. I just get... disoriented... every now and again. Last edited by JadedDragoon; September 10th, 2018 at 10:01 PM. |
#7 |
Junior Member
Join Date: Sep 2018
Posts: 27
|
Yeap. Works like a charm. So, apparently, you can add new spells via tags on the archetype... but to remove spells you need an eval script that adds a the deny tag to the linked class. Interesting.
|
#8 |
Senior Member
Volunteer Data File Contributor
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729
|
Quote:
Hopefully the perform linkage example came in handy then. 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. |
|
#9 |
Junior Member
Join Date: Sep 2018
Posts: 27
|
|
#10 |
|
|