• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Vigilante Playtest

One is CG the other is NG ... you'll have to figure out which is which ;-)

It won't fly, we already know that billionaire AdrewD2 is secretly ShadowChemosh at night. Getting your butler to post for you wasn't enough to fool me!
 
Well the Avenger is done. But let me say that the Warlock and the Zealot are annoying ... I hate turning a non-casting class into a casting class with custom abilities (even archetypes are a PITA). But I think I've go the system figured out really well.
 
Well the Avenger is done. But let me say that the Warlock and the Zealot are annoying ... I hate turning a non-casting class into a casting class with custom abilities (even archetypes are a PITA). But I think I've go the system figured out really well.
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.
 
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.
 
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.
What have something in a module procedure so it can be reused over and over again. That is just crazy talk. :)

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. :(
 
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 ...
 
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:
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:
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.
 
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:
Back
Top