• 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

Variant Classes and Prestige Spell advancements

Bluephoenix

Well-known member
Hello again! been a long time since I last visited, university and life made it impossible to game for a while, but thanks to a couple of friends I've got back into it, and also back trying to fill in missing content for the data files as I run into them.

I'm amazed at the progress so far on the 3.5 data files!

I went to do a Focused Specialist Wizard (CM variant) and then multiclass sorcerer into Ultimate Magus, however the UM spell casting progression levels were not applying the effects of the variant class. after trying to replicate this with other prestige classes, it happened to all of them, but not base wizard.

it turns out the variant class spell slot modifiers were being tied to base class level:
Code:
hero.child[cHelpWiz].field[cMemMax].arrayvalue[0] -= 1
hero.child[cHelpWiz].field[cMemMax].arrayvalue[1] -= 1
hero.child[cHelpWiz].field[cSecMax].arrayvalue[0] += 2
hero.child[cHelpWiz].field[cSecMax].arrayvalue[1] += 2

if (#levelcount[Wizard] >= 3) then
  hero.child[cHelpWiz].field[cMemMax].arrayvalue[2] -= 1
  hero.child[cHelpWiz].field[cSecMax].arrayvalue[2] += 2
endif

if (#levelcount[Wizard] >= 5) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[3] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[3] += 2
endif

if (#levelcount[Wizard] >= 7) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[4] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[4] += 2
endif

if (#levelcount[Wizard] >= 9) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[5] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[5] += 2
endif

if (#levelcount[Wizard] >= 11) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[6] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[6] += 2
endif

if (#levelcount[Wizard] >= 13) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[7] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[7] += 2
endif

if (#levelcount[Wizard] >= 15) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[8] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[8] += 2
endif

if (#levelcount[Wizard] >= 17) then
 hero.child[cHelpWiz].field[cMemMax].arrayvalue[9] -= 1
 hero.child[cHelpWiz].field[cSecMax].arrayvalue[9] += 2
endif
(post-att, priority 11500, ind 1)

is there any way to modify it to work on spell advancement level instead? I'm still re-learning the HL expression system, and it looks like this affects more than one variant class in the community files. A temporary fix I can apply would also be great for the character in my current weekly game, currently having to track spells prepared the old way, and its really reminding me why I love HL so much.

edit: rather than create a new thread, whats the procedure for submitting new files for the community set? I've accumulated a few odds and ends from stuff I regularly use, along with some material from mongoose publishing's Ultimate Equipment series. they're currently scattered across individual files so they don't get nuked by the community set updates.
 
Last edited:
Clearly, this is a bug in the Ultimate Magus prestige class. I'll take a look at it. If you get a fix before I do, feel free to send it along. I'm currently trying to figure out another issue I introduced in the last release, so I may not get to this before next week.

One of the things on my to-do list is to go through the things in the set and try to make some fixes, but its a lot easier if people just report errors instead (like this one) rather than having me go through everything.
 
Actually, it occurs with every single prestige class that advances spellcasting. (my wording sucks apparently)

I also tried it with some of the other variant classes, and it seems the standard methods of coding variant classes based on the #levelcount[class] expression is causing it to work if you have class levels, but does not work if you're progressing part of the class (SKL, etc) with a prestige class.

easy way to replicate is do wiz 5 focused specialist, then stack any PrC that advances spellcasting. the bonus spells will go from +3 when taking base classes to +1 when taking prestige levels (it only applies specialist wizard mod, not focused specialist)

I have no idea what to check instead of #levelcount[Wizard] though, because using something like caster level is affected by many magic items and feats. is there a separate var for just spellcasting progression?

Edit: tagcount[Hero.Arcane] might work, not sure. it also would likely cause problems with arcane multiclassing.

going to have a dig and see how the regular specialist wizard coding is done.
edit: apparently done in base class by a custom ability I can't find. so back to looking for something to replace the #levelcount[class] variable
 
Last edited:
Hmm...I guess I misunderstood you. I'll have to take a closer look at this tomorrow when I'm in front of HL. Sorry. Sometimes my reading comprehension leaves a little to be desired.
 
Crazy idea, but couldn't you do a check on the memorized spell array value?

I just tried using:
Code:
if (hero.child[cHelpWiz].field[cMemMax].arrayvalue[2] >= 1) then
  hero.child[cHelpWiz].field[cMemMax].arrayvalue[2] -= 1
  hero.child[cHelpWiz].field[cSecMax].arrayvalue[2] += 2
endif
and it seems to work, the logic being that if you can cast a spell of that level from attribute bonus or otherwise, the variant and normal specialist take effect. essentially the check is "can the character cast X level spells from X class?"

going to need to back check all of the caster variants and see which are affected by this though.

to update focused specialist, just replace the #levelcount expressions with arrayvalue[spelllevel] >=1
 
Last edited:
That's possible. I didn't get a chance the other day to look at it. I wrote it down on my to-do list, though, so I'll get to it soon. Thanks!
 
Ok, so I took a look at this. I modified the script to look for the Wizard caster level instead of wizard levels, thusly:

Code:
var lvl as number
lvl = hero.child[cHelpWiz].field[cCasterLev].value
.
.
.
if (lvl >= 3) then
.
.
.

I also am seeing a (minor) bug where if your INT isn't high enough you get an error that you have too many spells taken because it expects you to have -1. I'll fix that as well.
 
I'm having issues adding the favored enemy paladin variant. Essentially favored enemy doesn't show up all. Maybe I'm missing a step in adding it; because I probably need to script it in and don't have time to write script so... thoughts?
 
I can't get it to work either. The only thing I can think of is that the special "cFavEnemy" must have to be bootstrapped to a class in order to work, and not just a class special. One thing you could try is to create a new Paladin class using new (copy) for yourself that bootstraps this special.
 
I got it pop as a pick on the hero but it won't add any of the options I select...though oddly enough it doubles to number of favored enemies available to the ranger class if I add a lvl of that to it.
 
Last edited:
just came back to this while taking a break from doing sandstorm/etc, and doing the check by caster levels doesn't work because there are multiple effects that work on caster level (most notably practiced spellcaster) that don't advance spells known or cast. looks like cMemMax is the value that has to be checked.
 
Well, I can see why it adds to the Ranger's totals. Your script is adding to a special on the hero instead of the class. That might be the only way to do it, but that's why it changes the Rangers totals. I don't see anything obvious right now, but I'll continue to look at this and see if I can figure out what's going on.
 
Back
Top