• 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

Stonewarden Class Help

I'm guessing this is in the "Item Selection" part where it says "Custom Expression".

Is there an example of this in use? Or maybe just some help modifying one of the statements?

This is the primary statement I'm working with in the Eval Script:

perform hero.child[wClaw].assign[wMain.2d6_104]

so if I make a "custom expression" called 'primary' how would I modify that statement to target the field primary?
 
What's your overall goal here? I can't see what you're trying to accomplish with all this.

(in game terms, not Hero Lab terms)
 
Last edited:
Alright. This is a paragon class, basically instead of taking levels in Ranger, Monk, Wizard, etc you take levels in your race (but its not a monster class).
s
This class grants the race claw attacks that increase in damage similar to a monks unarmed strike. It also grants a bite and gore attack (levels 4 and 9 respectively) that also increases (at the same level, which is different from the claws) in damage. All these attacks are primary natural attacks.

It has abilities called enticements which let you select new abilities for customizing your character. One ability grants an additional set of arms and a claw attack that is considered a secondary natural attack. There is an enticement that can add a tail slam attack also as a secondary attack. There are also enticements that change the new claws into primary attacks (you have to take it once for each set of claws you want to convert) also enticements to raise the bite, gore and tail attacks to do the same damage as the claws. There is also an ability that lets you select a set of claws and that set is considered adamantine, it can be taken a number of times equal to the pairs of claws you have.

The enticements also contain abilities such as granting Acid Resistance that turns into Immunity if the level is >= 10. An acid breath weapon that does 1d6 damage/2 levels. An ability that adds 1d6 acid damage to your tail slam every time you take it (max 5d6). An ability that adds +2 damage to claw attacks. An ability that doubles the amount of acid damage being dealt. One that adds DR 5/magic each time you take it (max 15/magic). An ability that grants a spell like ability of a spell from the Earth subschool.

I think that's everything for the most part, I attached my user file (as a zip) if anyone wants to take a look at it.

Thanks
Andrew
 

Attachments

Yep, it has a minimum level of 6, but there is no limit (besides the number of enticements you have available).
 
Okay - if it were selectable only once, that would mean that the user didn't need to select which set of additional arms was now primary - there'd only be one set to find.

Actually, thinking about it further, there is a way to accomplish this without the user needing to select a specific set of claws to improve.

Alright. When you set up your additional arms ability, add a custom tag to it. Let's say SWAddArm.

Now, when you bootstrap the claw attack from that ability, press the Tags button, add a new tag, and give it that Custom tag you've defined:

group id: Custom, tag id: SWAddArm

You'll also force that claw to always be secondary:
group id: Helper, tag id: NatOverSec

On the "make our new claws primary attacks" you'll search through all the claw attacks on the hero that have been given that Custom tag:

phase: Pre-Levels, priority: 5000
Code:
var doneone as number
 
~find the claw attacks that came from the additional arms ability and are still forced to be secondary
foreach pick in hero from BaseNatWep where "IsWeapon.wClaw & Custom.SWAddArm & Helper.NatOverSec"
  ~as long as we haven't made one of our claw attacks primary, do so
  if (doneone = 0) then
    perform eachpick.delete[Helper.NatOverSec]
    ~and make sure we won't make a second one primary
    doneone = 1
    endif
  nexteach

According to the Bestiary, pg. 302, claws default to primary, so that's the behavior Hero Lab follows - once you delete Helper.NatOverSec, the claws will revert to being primary natural attacks.

It should also work if you add multiple copies of "make our new claws primary attacks" - each copy will find and make primary only one set of claws.
 
For the immunities and breath weapon, take a look at the Sorcerer's draconic bloodline - that's also got a breath weapon, and it's got energy resistances up to a certain level that are replaced by immunities beyond that.
 
I'm getting an error of:
Hero Lab was forced to stop compilation after the following errors were detected:

Syntax error in 'eval' script for Thing 'cStoPowArm' (Eval Script '#1') on line 8
-> Extra characters at end of line

and I'm not finding any extra characters.
 
In your Eval Script, check how everything's arranged - is the "~and make sure" line the 8th line there? (empty lines count towards the line numbering).

Could you try copying your script and pasting it here - that'll make sure everything stayed the same in the copying.
 
Code:
var doneone as number

~find the claw attacks that came from the additional arms ability and are still forced to be secondary

foreach pick in hero from BaseNatWep where "IsWeapon.wClaw & Custom.SWAddArm & Helper.NatOverSec"
 
 ~as long as we haven't made one of our claw attacks primary, do so
  if (doneone = 0) then
    perform eachpick.delete[Helper.NatOverSec]

    ~and make sure we won't make a second one primary
    doneone = 1
    endif
  nexteach

Hero Lab was forced to stop compilation after the following errors were detected:

Syntax error in 'eval' script for Thing 'cStoPowArm' (Eval Script '#1') on line 12
-> Extra characters at end of line
 
I appear to have stumbled over one of the pre-defined variables in Hero Lab, and trying to make use of it is causing some confusing errors. Replace "doneone" with "hasdoneone" and it should work.
 
Ok, well the ability to turn the additional arms from primary to secondary works, but the damage seems to only apply to one set of arms, and it seems to jump around depending on how many sets there are.

Is there a way to keep the wClaw damage the same for all instances, or do I need to do an eval script?
 
Code:
foreach pick in hero from BaseNatWep where "IsWeapon.wClaw & !Custom.SWAddArm"
  perform eachpick.delete[wMain.?]
  perform eachpick.assign[wMain.new damage value]
  nexteach

That'll find all the claws that aren't coming from the additional arms ability.

hero.childfound[] goes to only the first one it finds - as you saw, which one is first can be rather random. The reason it works for a monk is that there is only a single wUnarmed on any character.
 
Last edited:
Well they're all supposed to do the same damage (except for the amount of Str Mod applied). But I must have something wrong because when I add the extra arms the damage is right for those, but it goes back to 1d4 for the original attack.
 
It sounds like you don't want to exclude the Custom.SWAddArm ones, then.

Also, how did you arrange your if...elseif...elseif...endif within the foreach...nexteach?
 
Natural Attacks

Bootstraps: wClaw
Tags: AbilType.Extra, SpecType.Attack

Eval Script
Phase: Post-Levels Priority: 5000

Code:
    ~only perform the rest on the first copy
      doneif (tagis[Helper.FirstCopy] = 0)
foreach pick in hero from BaseNatWep where "IsWeapon.wClaw & !Custom.SWAddArm"

      ~ Get our unarmed strike pick, delete the damage tag from it, and assign
      ~ a new damage tag.
      var dice as string
      perform hero.child[wClaw].delete[wMain.?]
      if (field[xAllLev].value < 4) then
        perform hero.child[wClaw].assign[wMain.1d4_4]
        dice = "1d4"
      elseif (field[xAllLev].value < 8) then
        perform hero.child[wClaw].assign[wMain.1d6_5]
        dice = "1d6"
      elseif (field[xAllLev].value < 12) then
        perform hero.child[wClaw].assign[wMain.1d8_6]
        dice = "1d8"
      elseif (field[xAllLev].value < 16) then
        perform hero.child[wClaw].assign[wMain.2d6_104]
        dice = "2d6"
        
      elseif (field[xAllLev].value < 20) then
        perform hero.child[wClaw].assign[wMain.2d8_204]
        dice = "2d8"
      else
        perform hero.child[wClaw].assign[wMain.4d6_106]
        dice = "4d6"
        endif
      field[livename].text = "Claws" & " (" & dice & ")"
      ~field[livename].text = ""
      field[listname].text = field[livename].text
nexteach

Additional Arms

Bootstrap: wClaw Tags: Helper.NatOverSec, Custom.SWAddArm
Tags: SpecSource.cHelpGPa, SpecType.Attack, AbilType.Extra, Custom.SWAddArm
Expr-reqs: #levelcount[GargParag] >= 6

Eval Script

Code:
       ~only perform the rest on the first copy
      doneif (tagis[Helper.FirstCopy] = 0)

      ~ Get our unarmed strike pick, delete the damage tag from it, and assign
      ~ a new damage tag.
      var dice as string
      perform hero.child[wClaw].delete[wMain.?]
      if (field[xAllLev].value < 4) then
        perform hero.child[wClaw].assign[wMain.1d4_4]
        dice = "1d4"
      elseif (field[xAllLev].value < 8) then
        perform hero.child[wClaw].assign[wMain.1d6_5]
        dice = "1d6"
      elseif (field[xAllLev].value < 12) then
        perform hero.child[wClaw].assign[wMain.1d8_6]
        dice = "1d8"
      elseif (field[xAllLev].value < 16) then
        perform hero.child[wClaw].assign[wMain.2d6_104]
        dice = "2d6"
        
      elseif (field[xAllLev].value < 20) then
        perform hero.child[wClaw].assign[wMain.2d8_204]
        dice = "2d8"
      else
        perform hero.child[wClaw].assign[wMain.4d6_106]
        dice = "4d6"
        endif
      field[livename].text = "Claws" & " (" & dice & ")"
      ~field[livename].text = ""
      field[listname].text = field[livename].text
 
Within your foreach, you'll need to access the claw you're currently on with "eachpick", rather than "hero.child[wClaw]." - that way, you're accessing the current claw, not the first one found.

Also, by deleting " & !Custom.SWAddArms" from your first script, you should be able to delete the second script.
 
Thanks, its working now. Also just caught a problem that took me about a minute to fix, but in case someone new comes about.

The script about should be: perform eachpick.assign[wMain.new damage amount] and not a delete.
 
Alright, one of the abilities raises the damage of the bite up to that of the claws. I tried just adding an eval script with new damage amounts, but that doesn't seem to work at all. Is there something special I have to do to target wBite from an ability that didn't bootstrap it?
 
Could you provide more detail about how you're trying to accomplish this - the Eval Script, perhaps?
 
Back
Top