Senior Member
Join Date: Nov 2009
Posts: 891
|
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 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 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 Evil wins because good rolls poorly .... or the players are not paying enough attention to the game. |
#1 |
|
|