|
Senior Member
Join Date: Jun 2010
Location: Florida
Posts: 258
|
I have never though about Power Point Cost, with or without "No Power Points."
Lankhmar setting uses No Power Points. There is an edge Strong Caster: Quote:
Code:
herofield[powPrtPts].value -= 1 Code:
herofield[powPoints].value -= 1 Hmm, so the Power Point Cost we assign to spells in the editor is text? Is it possible to modify the cost to make the above edge work within HeroLab? |
|
#1 |
Senior Member
Volunteer Data File Contributor
Join Date: Aug 2009
Posts: 1,569
|
Try this:
herofield[powPoints].text -= 1 It's just stored in a text field rather than a number field is all. You can still do math with it. You just have to be a little more careful. And since you're deep into this, here's the code to determine casting mods so you can see why: Code:
var castingmod as string var castingno1 as number var castingno2 as number var length1 as number var lengthall as number var start2 as number var length2 as number var rawnumber1 as number var rawnumber2 as number var iteminfo as string var divisor as number iteminfo = "" divisor = herofield[acCastDiv].value if (hero.tagis[Hero.NoPowerPts] <> 0) then ~ #-# if (pos(field[powPoints].text,"-") > 0) then length1 = pos(field[powPoints].text,"-") start2 = pos(field[powPoints].text,"-") + 1 lengthall = length(field[powPoints].text) length2 = lengthall - start2 rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) rawnumber2 = right(field[powPoints].text,length2) castingno2 = round(rawnumber2/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & " to -" & castingno2 ~ #/section elseif (pos(lowercase(field[powPoints].text),"/section") > 0) then length1 = pos(lowercase(field[powPoints].text),"/section") rawnumber1 = left(field[powPoints].text,length1) castingno1 = rawnumber1 castingmod = "-" & castingno1 & " per 2 sections" ~ Special elseif (pos(lowercase(field[powPoints].text),"special") > 0) then castingmod = "Special" ~ #/# elseif (pos(field[powPoints].text,"/") > 0) then length1 = pos(field[powPoints].text,"/") start2 = pos(field[powPoints].text,"/") + 1 lengthall = length(field[powPoints].text) length2 = lengthall - start2 rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) rawnumber2 = right(field[powPoints].text,length2) castingno2 = round(rawnumber2/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & "/-" & castingno2 ~ #+ elseif (pos(field[powPoints].text,"+") > 0) then length1 = pos(field[powPoints].text,"+") rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & "+" ~ #/Corpse elseif (pos(lowercase(field[powPoints].text),"/corpse") > 0) then length1 = pos(lowercase(field[powPoints].text),"/corpse") rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & "/corpse" ~ # else castingno1 = round(field[powPoints].text/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 endif iteminfo &= "Casting Modifier: " & castingmod & "{br}" else iteminfo &= "Power Points: " & field[powPoints].text & "{br}" endif _ Currently In Development: Savage Pathfinder, SWADE Fantasy Companion Future Development: SWADE Super Powers Companion, SWADE Sci-Fi Companion _ Currently Running: Savage Unity Inc. (homebrew multiverse theme) Setting Files Supported: Deadlands: Reloaded, Flash Gordon, Gaslight, Hellfrost, Interface Zero 2.0, Seven Worlds, Slipstream, Solomon Kane Future Setting Files: Savage Judge Dredd |
#2 |
Senior Member
Volunteer Data File Contributor
Join Date: Aug 2009
Posts: 1,569
|
Dang zombies anyway LOL
_ Currently In Development: Savage Pathfinder, SWADE Fantasy Companion Future Development: SWADE Super Powers Companion, SWADE Sci-Fi Companion _ Currently Running: Savage Unity Inc. (homebrew multiverse theme) Setting Files Supported: Deadlands: Reloaded, Flash Gordon, Gaslight, Hellfrost, Interface Zero 2.0, Seven Worlds, Slipstream, Solomon Kane Future Setting Files: Savage Judge Dredd |
#3 |
Senior Member
Join Date: Jun 2010
Location: Florida
Posts: 258
|
Egads, that makes my eyes bleed
Okay so I tried out your suggestion: Setup/10000 Code:
herofield[powPoints].text -= 1 So should I be wrapping something further around that text? |
#4 |
Senior Member
Volunteer Data File Contributor
Join Date: Aug 2009
Posts: 1,569
|
I don't think herofield is right in this context. It should just be field, and you should be operating at the individual Power level.
_ Currently In Development: Savage Pathfinder, SWADE Fantasy Companion Future Development: SWADE Super Powers Companion, SWADE Sci-Fi Companion _ Currently Running: Savage Unity Inc. (homebrew multiverse theme) Setting Files Supported: Deadlands: Reloaded, Flash Gordon, Gaslight, Hellfrost, Interface Zero 2.0, Seven Worlds, Slipstream, Solomon Kane Future Setting Files: Savage Judge Dredd |
#5 |
Senior Member
Join Date: Jun 2010
Location: Florida
Posts: 258
|
It doesn't like
Code:
field[powPoints].text -= 1 By individual power level, this gets applied to every power by hand? I got lost on that part. This is an Edge that applies the -1 (-2 for Improved version) to all spells known by the hero. Do I have to do some sort of loop through every spell a hero has that acquires this edge? Not sure how to do that off the top of my head. I couldn't find good examples in the forums for affects applied to spells. |
#6 |
Senior Member
Volunteer Data File Contributor
Join Date: Aug 2009
Posts: 1,569
|
Odd. The field "powPoints" *is* a derived field.
_ Currently In Development: Savage Pathfinder, SWADE Fantasy Companion Future Development: SWADE Super Powers Companion, SWADE Sci-Fi Companion _ Currently Running: Savage Unity Inc. (homebrew multiverse theme) Setting Files Supported: Deadlands: Reloaded, Flash Gordon, Gaslight, Hellfrost, Interface Zero 2.0, Seven Worlds, Slipstream, Solomon Kane Future Setting Files: Savage Judge Dredd |
#7 |
Senior Member
Join Date: Jun 2010
Location: Florida
Posts: 258
|
So I decided to revisit a bunch of my files and update them from Deluxe to SWADE. I went with Lankhmar. Which means I am back to this old problem.
Is it possible somehow to have an Edge modify the Casting Modifier of spells the character has. There are at least three Edges (I think) that adjust the Casting Modifier in some shape or form. Take this Edge: Strong Caster The character is adept at channeling raw magical essence. A character with this Edge reduces the initial Casting Modifier of all spells by 1, to a minimum of zero. For instance, a spell with a Casting Modifier of -2 only inflicts a -1 penalty to this mage. So in the perfect world, this would just work: Setup/10000 Code:
field[powPoints].text -= 1 Code:
field[powPoints].value -= 1 So has anyone been able to make this work somehow? Adjust the powPoints in some way? Theoretically, an Edge like this could apply to setting that uses Power Points as well. Say an Edge that shaves off 1 or 2 Power Points cost from every spell a character knows. So solving this could prove helpful I think. Right now, a player would just have to remember all his Edges that effect the Power Point Cost and do that math on his character sheet. Certainly doable but would be nice to have HeroLab do the math first before character sheet printed out. Haven't seen a lot of activity on her besides myself and Caped Crusader. Hoping one of the other hard core guys still using HeroLab and might have some thoughts. |
#8 |
Senior Member
Volunteer Data File Contributor
Join Date: Aug 2009
Posts: 1,569
|
OK, without knowing what the error is, I can only guess.
I think the issue you're running into is that field[powPoints] is a text value, not a numeric one. Those should be throwing two different errors? To give you an idea, here's the code to figure out that Casting Modifier: Code:
~RDS SWD this was modified to display Casting Modifiers and altered Durations for No Power Points var castingmod as string var castingno1 as number var castingno2 as number var length1 as number var lengthall as number var start2 as number var length2 as number var rawnumber1 as number var rawnumber2 as number var iteminfo as string iteminfo = "" ~report the power point cost or casting modifier if (hero.tagis[Hero.NoPowerPts] <> 0) then ~ #-# if (pos(field[powPoints].text,"-") > 0) then length1 = pos(field[powPoints].text,"-") start2 = pos(field[powPoints].text,"-") + 1 lengthall = length(field[powPoints].text) length2 = lengthall - start2 rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) rawnumber2 = right(field[powPoints].text,length2) castingno2 = round(rawnumber2/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & " to -" & castingno2 ~ #/section elseif (pos(lowercase(field[powPoints].text),"/section") > 0) then length1 = pos(lowercase(field[powPoints].text),"/section") rawnumber1 = left(field[powPoints].text,length1) castingno1 = rawnumber1 castingmod = "-" & castingno1 & " per 2 sections" ~ Special elseif (pos(lowercase(field[powPoints].text),"special") > 0) then castingmod = "Special" ~ #/# elseif (pos(field[powPoints].text,"/") > 0) then length1 = pos(field[powPoints].text,"/") start2 = pos(field[powPoints].text,"/") + 1 lengthall = length(field[powPoints].text) length2 = lengthall - start2 rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) rawnumber2 = right(field[powPoints].text,length2) castingno2 = round(rawnumber2/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & "/-" & castingno2 ~ #+ elseif (pos(field[powPoints].text,"+") > 0) then length1 = pos(field[powPoints].text,"+") rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & "+" ~ #/Corpse elseif (pos(lowercase(field[powPoints].text),"/corpse") > 0) then length1 = pos(lowercase(field[powPoints].text),"/corpse") rawnumber1 = left(field[powPoints].text,length1) castingno1 = round(rawnumber1/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 & "/corpse" ~ # else castingno1 = round(field[powPoints].text/herofield[acCastDiv].value,0,-1) castingmod = "-" & castingno1 endif @text = "Casting Modifier: " & castingmod else @text = "{/b}Points:{b} " & field[powPoints].text endif ~@text = "{/b}Points:{b} " & field[powPoints].text @text &= "{horz 20}{/b}Range:{b} " & field[powRange].text _ Currently In Development: Savage Pathfinder, SWADE Fantasy Companion Future Development: SWADE Super Powers Companion, SWADE Sci-Fi Companion _ Currently Running: Savage Unity Inc. (homebrew multiverse theme) Setting Files Supported: Deadlands: Reloaded, Flash Gordon, Gaslight, Hellfrost, Interface Zero 2.0, Seven Worlds, Slipstream, Solomon Kane Future Setting Files: Savage Judge Dredd |
#9 |
Senior Member
Join Date: Jun 2010
Location: Florida
Posts: 258
|
Code:
field[powPoints].text -= 1 Quote:
Code:
field[powPrtPts].value -= 1 Quote:
If a spell costs 4 Power Points to cast, -4 on a Casting Modifier, the Strong Caster Edge reduces that by 1. So the spell now costs 3 Power Points, -3 on a Casting Modifier. Other Edges subtract more, in some cases reducing the Power Point cost and Casting Modifier to essentially '0.' I see what that code you supplied is doing. But just don't see how I can affect it with the Edge Code I supplied, since they both error out. |
||
#10 |
Thread Tools | |
Display Modes | |
|
|