Lone Wolf Development Forums

Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - Savage Worlds (http://forums.wolflair.com/forumdisplay.php?f=59)
-   -   Setting "No Power Points" (http://forums.wolflair.com/showthread.php?t=67933)

Gumbytie August 3rd, 2023 03:28 AM

Setting "No Power Points"
 
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:

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.
I thought, easy enough. So I tried two versions of code and each gave the same error.

Code:

herofield[powPrtPts].value -= 1
Error: Attempt to access text-based field 'powPrtPts' as value.

Code:

herofield[powPoints].value -= 1
Error: Attempt to access text-based field 'powPoints' as value.

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?

CapedCrusader August 3rd, 2023 07:33 AM

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


CapedCrusader August 3rd, 2023 07:33 AM

Dang zombies anyway LOL

Gumbytie August 3rd, 2023 09:12 AM

Egads, that makes my eyes bleed :)

Okay so I tried out your suggestion:

Setup/10000
Code:

herofield[powPoints].text -= 1
I get a syntax error: Only derived fields can generally be modified via scripts (field 'powPoints')

So should I be wrapping something further around that text?

CapedCrusader August 3rd, 2023 09:44 AM

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.

Gumbytie August 3rd, 2023 10:20 AM

It doesn't like

Code:

field[powPoints].text -= 1
Same error code.

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.

CapedCrusader August 4th, 2023 08:21 AM

Odd. The field "powPoints" *is* a derived field.


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

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