Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Savage Worlds
Register FAQ Community Today's Posts Search

Notices

Reply
 
Thread Tools Display Modes
SeeleyOne
Senior Member
 
Join Date: Nov 2009
Posts: 891

Old February 9th, 2016, 07:19 PM
I have never liked how Savage Worlds has handled the possibility for a race to cause a character to have a penalty to an attribute. My solution is that in most cases there are two options, -1 or -2. Each increase will have it stay at a d4, but mitigate the penalty by -1. Additionally, I use alternate size rules where the character's size (positive or negative) is doubled and then modifies the character's strength die. After it gets to the maximum die, it becomes a modifier.

I will only share a couple of example scripts. I have no eval script inside my Weak (-1 strength) and Weakling (-2 strength) racial properties as they are accounted for in a script that also looks for the racial properties that lower Size (and therefore strength die steps).

The effects of this rule are that a character has to pay more to get out of the d4 die, but can eventually, and the maximum die is lowered in the process. A "d12" strength for a d4-2 strength race is d8. While it works great with weapons that check strength for damage and other requirements, there is an odd quirk that I cannot fix where skill costs during character creation treat it as being of a higher die. For some reason, the scripts for that do not look at the final trait die. There was no way for me to mark them as "creation only" and apply a penalty retroactively, so we are stuck with that quirk. It works fine while spending Advancements, however, so it only gives a possible bonus for characters being created. <shrug>

My -1 Vigor, called Fragile, has this text:
Initial Vigor is d4 -1. Its first increase will increase it to d4. The maximum is reduced by one.

The eval script is Traits, 4000, after Calc trtFinal, before Derived trtFinal
Code:
var value as number
value = #trait[attrVig]
value -=1

if (value < 2) then
   perform #traitroll[attrVig,-,1,"Fragile"]
else
   hero.child[attrVig].field[trtFinal].value = value
endif
My -2 Agility, called Klutz, has the following text:
Initial Agility is d4 -2. Its first increase will increase it to d4-1, and its second increase will increase it to d4. The maximum is reduced by two.

The eval script has the same timing, phase, and before/after as above
Code:
var value as number
value = #trait[attrAgi]
value -=2

if (value < 2) then
   if (value = 0) then
      perform #traitroll[attrAgi,-,2,"Klutz"]
   else
      perform #traitroll[attrAgi,-,1,"Klutz"]
   endif
   hero.child[attrAgi].field[trtFinal].value = 2
else
   hero.child[attrAgi].field[trtFinal].value = value
endif
My various sizes can be extrapolated from the code below. This code is in a mechanic, which I call Strength Penalty, that looks at the character. Small is a -1 .... Miniscule is -4.

The timing, phase, before/after are as above
Code:
var strength as number
var size as number
var weak as number
var modifier as number
strength = #trait[attrStr]
size = 0
weak = 0

~ Determine small size (Size does not exist at this stage).
if (hero.tagis[RacialProp.rpSzSmall] = 1) then
   size = -2
endif

if (hero.tagis[RacialProp.rpSzDiminu] = 1) then
  size = -4
endif

if (hero.tagis[RacialProp.rpSzTiny] = 1) then
   size = -6
endif

if (hero.tagis[RacialProp.rpSzMinisc] = 1) then
  size = -8
endif

~ Determine weakness.
if (hero.tagis[RacialProp.rpWeak] = 1) then
   weak = -1
endif

if (hero.tagis[RacialProp.rpWeakling] = 1) then
  weak = -2
endif

~ Determine total strength modifier.
modifier = size + weak

if (modifier < 0) then
   strength += modifier

   ~ if strength is adjusted to lower than d4.
   if (strength < 2) then
      ~ Strength die is locked at d4, then a penalty is applied.
      var remainder as number
      remainder = strength -2
      hero.child[attrStr].field[trtFinal].value = 2
      perform #traitroll[attrStr,+,remainder,"Weak/Small Size"]
   else
      hero.child[attrStr].field[trtFinal].value = strength
   endif
endif
Enjoy!

Evil wins because good rolls poorly .... or the players are not paying enough attention to the game.
SeeleyOne is offline   #1 Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 03:56 AM.


Powered by vBulletin® - Copyright ©2000 - 2024, vBulletin Solutions, Inc.
wolflair.com copyright ©1998-2016 Lone Wolf Development, Inc. View our Privacy Policy here.