Jobe00
Well-known member
I'm wanting to make Growth and Shrinking where they alter size category every 3 ranks instead of every 4 because I like the Cube/Square Law (Every mass increase by a factor of 8, which would be 3 ranks, doubles size, which would be 1 size category increase).
So this would be altered fluff for Growth:
Each rank of Growth adds 1 rank to your Strength and Stamina (constructs add 1 rank to Strength and Toughness if they lack Stamina) and adds 1 rank to your mass. Every two ranks adds a +1 bonus to Intimidation. Every 6 ranks adds 1 to your Speed. Every rank of Growth subtracts 1 from your Stealth checks. Every 2 ranks (rounded up) subtracts 1 from your Dodge and Parry defenses. Every 3 ranks of Growth increases your size rank by 1 (ordinary humans start out at size rank -2, between 3 and 6 feet tall). So at Growth 6, you have +6 Strength and Stamina, +3 to Intimidation, +1 Speed, but -6 to Stealth, -3 Dodge and Parry, and you are size rank 0 (around 24 feet tall). Increases to your Strength and Stamina also improve related traits like your Strength Damage, Fortitude, and Toughness.
I copied the Growth power over and fiddled with it as follows:
~ Calculate our bonuses
var strbonus as number
var stabonus as number
var intimbonus as number
var activepen as number
var stealthpen as number
if (tagis[Helper.GrwNoAbil] = 0) then
strbonus = field[pwRanks].value
stabonus = field[pwRanks].value
endif
if (tagis[Helper.GrwNoSkill] = 0) then
intimbonus = round(field[pwRanks].value / 2, 0, -1)
stealthpen = field[pwRanks].value
endif
activepen = round(field[pwRanks].value / 2, 0, -1)
~ Calculate our growth amount - every 3 ranks gives us a size increase
var sizebonus as number
if (tagis[Helper.GrwNoSize] = 0) then
sizebonus = minimum(field[pwRanks].value, 20) / 3
sizebonus = round(sizebonus, 0, -1)
endif
~ Calculate our speed bonus - this is half our size ranks, although we
~ don't actually apply it here (since it's applied automatically by our
~ size change)
var speedbonus as number
if (tagis[Helper.GrwNoSpeed] = 0) then
speedbonus = round(sizebonus / 2, 0, -1)
endif
~ Work out if we get a Toughness bonus instead of a Stamina bonus
var istough as number
istough = hero.child[attrSta].tagis[Helper.NoScore]
~ Set our descriptive text
if (strbonus <> 0) then
field[pwInfo].text = "+" & strbonus & " STR"
endif
if (stabonus <> 0) then
var temp as string
if (istough <> 0) then
temp = " Tough"
else
temp = " STA"
endif
field[pwInfo].text = splice(field[pwInfo].text, "+" & stabonus & temp, ", ")
endif
if (intimbonus <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "+" & intimbonus & " Intimidate", ", ")
endif
if (stealthpen <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "-" & stealthpen & " Stealth", ", ")
endif
if (activepen <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "-" & activepen & " active defenses", ", ")
endif
if (sizebonus > 0) then
field[pwInfo].text = splice(field[pwInfo].text, "+" & sizebonus & " size categor", ", ")
if (sizebonus = 1) then
field[pwInfo].text &= "y"
else
field[pwInfo].text &= "ies"
endif
endif
if (speedbonus <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "+" & speedbonus & " speed ranks", ", ")
endif
~ If we're not active, or if we're using an "attack only" version of this
~ power, there are no stat changes to apply
doneif (activated = 0)
doneif (tagexpr[Helper.AttackOnly | Helper.OthersOnly] <> 0)
~ We don't want to apply our bonuses twice, so for each size category we
~ grow, we lose 4 str / sta, 2 intimidate, and gain 2 active defenses
~ back.
if (tagis[Helper.GrwNoAbil] = 0) then
strbonus -= sizebonus * 4
stabonus -= sizebonus * 4
endif
if (tagis[Helper.GrwNoSkill] = 0) then
intimbonus -= sizebonus * 2
stealthpen -= sizebonus * 4
endif
activepen -= sizebonus * 2
~ Apply ability bonuses
var v_mod as number
perform hero.child[attrStr].setfocus
v_mod = strbonus
call ApplyPwEff
if (istough <> 0) then
perform hero.child[defTough].setfocus
else
perform hero.child[attrSta].setfocus
endif
v_mod = stabonus
call ApplyPwEff
~ Apply skill bonuses
perform hero.child[skIntim].setfocus
v_mod = intimbonus
call ApplyPwEff
perform hero.child[skStealth].setfocus
v_mod = -stealthpen
call ApplyPwEff
~ Apply active defense penalties
v_mod = -activepen
perform hero.child[defDodge].setfocus
call ApplyPwEff
perform hero.child[defParry].setfocus
call ApplyPwEff
~ Apply negative bonuses to all strength-based skills with the 'grow
~ exempt' tag, since they don't get any bonuses from Growth. Bonuses from
~ abilities always count as permanent, so we need to always apply a
~ permanent modifier to counter them.
var v_forceprm as number
v_mod = -1 * field[pwRanks].value
v_forceprm = 1
foreach pick in hero from Skill where "SklExempt.pwGrowth"
perform eachpick.setfocus
call ApplyPwEff
nexteach
v_forceprm = 0
~ Apply our size change
perform hero.child[Size].setfocus
v_mod = sizebonus
call ApplyPwEff
I keep getting the error:
(line 13) - Thing 'pwGrowRev' - Value given for attribute 'index' does not satisfy range requirements
Is there any way to make this viable where it will work like I want it?
So this would be altered fluff for Growth:
Each rank of Growth adds 1 rank to your Strength and Stamina (constructs add 1 rank to Strength and Toughness if they lack Stamina) and adds 1 rank to your mass. Every two ranks adds a +1 bonus to Intimidation. Every 6 ranks adds 1 to your Speed. Every rank of Growth subtracts 1 from your Stealth checks. Every 2 ranks (rounded up) subtracts 1 from your Dodge and Parry defenses. Every 3 ranks of Growth increases your size rank by 1 (ordinary humans start out at size rank -2, between 3 and 6 feet tall). So at Growth 6, you have +6 Strength and Stamina, +3 to Intimidation, +1 Speed, but -6 to Stealth, -3 Dodge and Parry, and you are size rank 0 (around 24 feet tall). Increases to your Strength and Stamina also improve related traits like your Strength Damage, Fortitude, and Toughness.
I copied the Growth power over and fiddled with it as follows:
~ Calculate our bonuses
var strbonus as number
var stabonus as number
var intimbonus as number
var activepen as number
var stealthpen as number
if (tagis[Helper.GrwNoAbil] = 0) then
strbonus = field[pwRanks].value
stabonus = field[pwRanks].value
endif
if (tagis[Helper.GrwNoSkill] = 0) then
intimbonus = round(field[pwRanks].value / 2, 0, -1)
stealthpen = field[pwRanks].value
endif
activepen = round(field[pwRanks].value / 2, 0, -1)
~ Calculate our growth amount - every 3 ranks gives us a size increase
var sizebonus as number
if (tagis[Helper.GrwNoSize] = 0) then
sizebonus = minimum(field[pwRanks].value, 20) / 3
sizebonus = round(sizebonus, 0, -1)
endif
~ Calculate our speed bonus - this is half our size ranks, although we
~ don't actually apply it here (since it's applied automatically by our
~ size change)
var speedbonus as number
if (tagis[Helper.GrwNoSpeed] = 0) then
speedbonus = round(sizebonus / 2, 0, -1)
endif
~ Work out if we get a Toughness bonus instead of a Stamina bonus
var istough as number
istough = hero.child[attrSta].tagis[Helper.NoScore]
~ Set our descriptive text
if (strbonus <> 0) then
field[pwInfo].text = "+" & strbonus & " STR"
endif
if (stabonus <> 0) then
var temp as string
if (istough <> 0) then
temp = " Tough"
else
temp = " STA"
endif
field[pwInfo].text = splice(field[pwInfo].text, "+" & stabonus & temp, ", ")
endif
if (intimbonus <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "+" & intimbonus & " Intimidate", ", ")
endif
if (stealthpen <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "-" & stealthpen & " Stealth", ", ")
endif
if (activepen <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "-" & activepen & " active defenses", ", ")
endif
if (sizebonus > 0) then
field[pwInfo].text = splice(field[pwInfo].text, "+" & sizebonus & " size categor", ", ")
if (sizebonus = 1) then
field[pwInfo].text &= "y"
else
field[pwInfo].text &= "ies"
endif
endif
if (speedbonus <> 0) then
field[pwInfo].text = splice(field[pwInfo].text, "+" & speedbonus & " speed ranks", ", ")
endif
~ If we're not active, or if we're using an "attack only" version of this
~ power, there are no stat changes to apply
doneif (activated = 0)
doneif (tagexpr[Helper.AttackOnly | Helper.OthersOnly] <> 0)
~ We don't want to apply our bonuses twice, so for each size category we
~ grow, we lose 4 str / sta, 2 intimidate, and gain 2 active defenses
~ back.
if (tagis[Helper.GrwNoAbil] = 0) then
strbonus -= sizebonus * 4
stabonus -= sizebonus * 4
endif
if (tagis[Helper.GrwNoSkill] = 0) then
intimbonus -= sizebonus * 2
stealthpen -= sizebonus * 4
endif
activepen -= sizebonus * 2
~ Apply ability bonuses
var v_mod as number
perform hero.child[attrStr].setfocus
v_mod = strbonus
call ApplyPwEff
if (istough <> 0) then
perform hero.child[defTough].setfocus
else
perform hero.child[attrSta].setfocus
endif
v_mod = stabonus
call ApplyPwEff
~ Apply skill bonuses
perform hero.child[skIntim].setfocus
v_mod = intimbonus
call ApplyPwEff
perform hero.child[skStealth].setfocus
v_mod = -stealthpen
call ApplyPwEff
~ Apply active defense penalties
v_mod = -activepen
perform hero.child[defDodge].setfocus
call ApplyPwEff
perform hero.child[defParry].setfocus
call ApplyPwEff
~ Apply negative bonuses to all strength-based skills with the 'grow
~ exempt' tag, since they don't get any bonuses from Growth. Bonuses from
~ abilities always count as permanent, so we need to always apply a
~ permanent modifier to counter them.
var v_forceprm as number
v_mod = -1 * field[pwRanks].value
v_forceprm = 1
foreach pick in hero from Skill where "SklExempt.pwGrowth"
perform eachpick.setfocus
call ApplyPwEff
nexteach
v_forceprm = 0
~ Apply our size change
perform hero.child[Size].setfocus
v_mod = sizebonus
call ApplyPwEff
I keep getting the error:
(line 13) - Thing 'pwGrowRev' - Value given for attribute 'index' does not satisfy range requirements
Is there any way to make this viable where it will work like I want it?