• 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

Detecting Save Progression of Non-Classes

TobyFox2002

Well-known member
I am trying to find a way to detect the save progression of non-classes such as monsters. I've tried a number of methods and it seems that there is no standardized way of marking monster save progression. Most dont even use tags to list their progression just a field that holds their starting base saves.

Is there something that I am missing? I mean I know there is probably some fiddly math I could concoct using subtraction to remove the bonuses and leave me with the base saves and then divide that by something to give me something useful. But, yeah, I'm hoping there is something a little easier.
 
How saves advance is mostly a function of the monster's type and number of non class HD. The only ones which need a marking tag are Humanoids and Outsiders, which don't have a default. What are you trying to do? Stop racial HD from adding anything to saves? Switch the default good saves to something else?
 
I am trying to create an adjustment script for "Ordinary Sized Creatures" as is shown in "Microsized Adventures." The adjustment, among other things adds a bonus to saves of a creature based on how many sizes larger an ordinary creature is as compared to a drastically reduced player. The progression for bonuses is based on if the character fast or slow progression.

Now, I have found a way that seems to do this, but I cant find the code. "Additional HD" correctly advances BAB and SAVES. Which means, "Additional HD," has found a way to do this. I can't find any code for how this is handled.
 
It's in a component script, so you can't really affect it, other than perhaps by adding to rHDFinal.

First 650 script name is "Racial Stats"
Code:
      ~ Calculate our saving throw levels for the total number of racial hit
      ~ dice
      var v_level as number
      var v_good as number
      var v_medium as number
      var v_bad as number

      v_level = field[rHDFinal].value

      ~ If the appropriate Stop tag is present we don't gain our additional
      ~ saves from more HD (though we do for racial HD), so we need to use the
      ~ normal HD field.
      if (hero.tagis[StopCalc.Saves] <> 0) then
        v_level = field[rHitDice].value
        endif

      call cCalcSaves

      var savebonus as number
      var isgoodsave as number

      ~fort save
      if (tagexpr[SaveGood.svFort | SaveGood.svAll] <> 0) then
        savebonus = v_good + field[rFort].value
        isgoodsave = 1
      else
        savebonus = v_bad + field[rFort].value
        isgoodsave = 0
        endif

      perform hero.child[svFort].setfocus
      if (v_level = 0) then
        if (savebonus <> 0) then
          call AddSaveBon
          endif
      else
        call AddSaveBon
        endif

      ~ref save
      if (tagexpr[SaveGood.svRef | SaveGood.svAll] <> 0) then
        savebonus = v_good + field[rRef].value
        isgoodsave = 1
      else
        savebonus = v_bad + field[rRef].value
        isgoodsave = 0
        endif
      perform hero.child[svRef].setfocus
      if (v_level = 0) then
        if (savebonus <> 0) then
          call AddSaveBon
          endif
      else
        call AddSaveBon
        endif

      ~will save
      if (tagexpr[SaveGood.svWill | SaveGood.svAll] <> 0) then
        savebonus = v_good + field[rWill].value
        isgoodsave = 1
      else
        savebonus = v_bad + field[rWill].value
        isgoodsave = 0
        endif
      perform hero.child[svWill].setfocus
      if (v_level = 0) then
        if (savebonus <> 0) then
          call AddSaveBon
          endif
      else
        call AddSaveBon
        endif

If you need to look at the procedure calls, you can copy them in the editor.
 
Back
Top