• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Arcane Thesis

Alright, so after several nights of trying to figure this out....I can't figure out how to finish up the scripting of the feat. To summarize, I'll list the feat, the current script, and then what's needed and what needs fixing.

Benefit: Choose one arcane spell that you can cast to be your thesis spell. When casting that spell, you do so at +2 caster level. When you apply a metamagic feat other than Heighten Spell to that spell, the enhanced spell uses up a spell slot one level lower than normal. For example, an empowered thesis spell uses up a spell slot one level higher than the spell's actual slot (rather than the normal two levels higher).
Special: You can gain this feat multiple times. Its effects do not stack. Each time you take the feat, it applies to a new spell.

Phase: Post-Attributes Priority: 14500
Script:

doneif (field[usrChosen1].ischosen = 0)

~ Generate our search expression to target the correct spell
var searchexpr as string
searchexpr = "thingid." & field[usrChosen1].chosen.idstring
searchexpr &= " & HasMetaMag.?"

~ Cycle through all the Custom/metamagic copies of our chosen spell,
~ and reduce their effective level by 1 (keeping them from going negative)
foreach pick in hero from BaseSpell where searchexpr
eachpick.field[sLevel].value = maximum(eachpick.field[sLevel].value - eachpick.tagcount[HasMetaMag.?],0)
nexteach

What's Missing Still: "When casting that spell, you do so at +2 caster level."
- I found the feat Spell Specialization that increases the caster level by +2, but I wasn't sure how to apply it's scripting, or could even find where it increased the caster level.

What needs fixing: Due to the scripting of the metamagic reduction, the save DC seems to be getting decreased by 1 for every metamagic feat applied. Here's a great response a fellow board member suggested...."It would appear to me that by lowering each metamagic feat by an effective level of 1, you are also reducing the DC being applied by 1. At the moment, I can't explain why since I haven't delved into it. To offset it, though, I would probably use a variable to count how many metamagic feats there are, then increase the DC by 1 for each."


I can find scripts to increase the DC...and might be able to stumble my way through writing the script for counting metamagic feats....but not sure how to apply multiple scripts to the same feat (One for reducing metamagic cost, one to increase caster level, and one to increase the save). I'd appreciate ya'lls help. The more I try....the more I learn from all of you.
 
Last edited:
Code:
eachpick.field[sCL].value += 2

Should be all you need for the CL. Just add that as a second line within your foreach.
 
I think let's try changing the way the metamagic cost reductions are handled.

Switch the phase & priority to Post-Attributes/11000 (a little earlier).

Then, we're going to use a double-foreach to find all the spells, and then find all the metamagics within that spell

Code:
doneif (field[usrChosen1].ischosen = 0)
 
~ Generate our search expression to target the correct spell
var searchexpr as string
searchexpr = "thingid." & field[usrChosen1].chosen.idstring
searchexpr &= " & HasMetaMag.?"
 
~ Cycle through all the Custom/metamagic copies of our chosen spell,
~ and reduce their effective level by 1 (keeping them from going negative)
foreach pick in hero from BaseSpell where searchexpr
  foreach pick in eachpick.gizmo from BaseMetamg
    eachpick.field[mmFinalLev].value = maximum(eachpick.field[mmFinalLev].value - 1, 0)
    nexteach
  nexteach
 
Adding the CL to the revised metamagic level cost script:

Code:
doneif (field[usrChosen1].ischosen = 0)

~ Generate our search expression to target the correct spell
var searchexpr as string
searchexpr = "thingid." & field[usrChosen1].chosen.idstring
searchexpr &= " & HasMetaMag.?"

~ Cycle through all the Custom/metamagic copies of our chosen spell,
~ and reduce their effective level by 1 (keeping them from going negative)
foreach pick in hero from BaseSpell where searchexpr
  eachpick.field[sCL].value += 2
  foreach pick in eachpick.gizmo from BaseMetamg
    eachpick.field[mmFinalLev].value = maximum(eachpick.field[mmFinalLev].value - 1, 0)
    nexteach
  nexteach
 
Edit: Was typing before you added that. Thank you SO much! My guesses on where to put the CL adjustment would've been wrong.

Even seeing how you do it....they why of the how still eludes me. I feel like I'm pretty much a parrot simply finding the codes already imbedded in the system, and simply regurgitating it on to new feats and such, lol. I appreciate the help.
 
Last edited:
I just realized that, as written, that would only have added a CL bonus to metamagic-altered copies of the chosen spell, and skipped the regular copies of that spell

Code:
doneif (field[usrChosen1].ischosen = 0)
 
~ Generate our search expression to target the correct spell
var searchexpr as string
searchexpr = "thingid." & field[usrChosen1].chosen.idstring
 
~ Cycle through all the Custom/metamagic copies of our chosen spell,
~ and reduce their effective level by 1 (keeping them from going negative)
foreach pick in hero from BaseSpell where searchexpr
  eachpick.field[sCL].value += 2
  if (eachpick.tagis[HasMetaMag.?] <> 0) then
    foreach pick in eachpick.gizmo from BaseMetamg
      eachpick.field[mmFinalLev].value = maximum(eachpick.field[mmFinalLev].value - 1, 0)
      nexteach
    endif
  nexteach
 
The code is still reducing the Save DC by the number of metamagic feats applied. Oddly enough Metamagic Focus doesn't work either. As a test, I took a base fireball, and the save DC registers as 18. Apply Maximize, a +3 adjustment, and it registers as a 6th level spell....with a save DC of 18. Odd.

Edit: As far as checking to see if the Caster Level increase was applied correctly....frankly I can't even see where to check that. I see where it shows my base CL, but not the spell specific CL's (taking in to account feats, class features, etc.) With the system having the coding to apply these increases to specifics spells and types of spells....I figure the output is somewhere, but I can't figure out where without going to a print preview of the character sheet.
 
Last edited:
You've got "Enable Data File Debugging" turned on in the Develop menu, right? If so, right-click the spell, and choose "show debug fields for XXXXX", and you can look at the CL.
 
Could you give me the details of an example or two of the DC getting reduced? What spell level did it start with, what metamagics are being applied, etc.
 
Let me try that real quick.

Edit: Alright, so the Caster Level increase worked perfectly. Thanks again!

Edit: Alright, so examples...no problem.

Original: Fireball, Level: 3, DC: 18
After Metamagic (Empowered, Intensified) is Applied: Level 6, DC 18
After Arcane Thesis is added to that: Level 4, DC 16

So, looking at this example, you can see that the metamagic reduction is working well, however the DC save gets reduced by 1 for every metamagic feat applied.
 
Last edited:
FYI. One of the projects I'm hoping to do once FATE is done is adding more info on the spells tab, like individual CL and such.
 
That's great to hear! I was just thinking that although having the damage die be automatically calculated would take a good bit of restructured programming (essentially under the spells tab in the editor you'd have to create new entries/menus for die type, number of dice including the option of CL, and maximum number)...my limited knowledge of programming dictates it shouldn't be TOO difficult to do the calculations and displays for individual caster levels....since it can be done in an excel spreadsheet.

But that's the idle ramblings of a man who's on night shift....and on his night off, lol.
 
Let me investigate the DC issue further. I think there's a bug on our end - it's adding the modified metamagic level (mmFinalLev) to the spell's level, but it's subtracting the unmodified metamagic level (mmLevel) from the DC (the subtraction is there to compensate for the change in level, since normally, altering the spell's level would change the DC, but that's not the case if it comes from a metamagic other than heighten spell).
 
I appreciate you looking in to it. I sort of followed you explanation to what was going wrong...but not enough to truly understand it.
 
Last edited:
Alright, my 4 days of Night Shift are over....which means I'm back at it again. Still trying to work this one out. Until you guys figure out the WHY of what it's doing, I'm okay with just writing a script that will apply a +1 DC for each Metamagic feat applied. I'm just working out how to do that now. The placement of where to put the added scriptwork still eludes me.

Here's what I've got to increase the save DC so far:

if (eachpick.tagis[HasMetaMag.?] <> 0) then
foreach pick in eachpick.gizmo from BaseSpell
eachpick.field[sDC].value = maximum(eachpick.field[sDC].value + 1, 0)

Please tell me I'm on the right track.....
 
Back
Top