Lone Wolf Development Forums

Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - Mutants & Masterminds (http://forums.wolflair.com/forumdisplay.php?f=48)
-   -   (M&M 3e) Alterations to Growth and Shrinking (http://forums.wolflair.com/showthread.php?t=22001)

Jobe00 July 23rd, 2012 12:31 AM

Alterations to Growth and Shrinking
 
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?

TCArknight July 23rd, 2012 04:55 AM

I think I've gotten this before too when copying a power with scripts. Check the numbering of the scripts on the power. It should start with number 1 and go from there. If you just have one script, it should be number 1.


All times are GMT -8. The time now is 07:18 AM.

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