• 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

Elf Wizard Racial Substitution Level

chogenkiboy

Active member
I'm trying to implement the Elf Wizard Racial Substitution Level for 1st level from Races of the Wild, pg. 157. It's essentially a Wizard that adds a class special called Generalist Wizardry. Generalist Wizardry behaves like a weaker version of school specialization, but instead of losing schools, the restriction is the character must be an Elf. Instead of preparing a free specialty spell of each level, the character can prepare a single free spell of the highest level the Elf Wizard can cast.

Lacking the knowledge to attempt a deep level, script heavy implementation, I tried a sledge hammer approach of creating a Wizard Class variant that would access a Wizard Class Helper variant with modified spells per level.

The Wizard Class itself didn't undergo any significant changes, just Name, Unique Id, Description Text, Bootstrap to the helper variant, and Linkage to the helper variant.

In the Wizard Class Helper variant, I didn't see a way to edit spells per level in the Editor, so I hacked the XML file and incremented the number of highlest level spell slots for each level by one.

The custom file seems to compile fine, but when I select a level in "Elf Wizard", Hero Lab shuts down with the following log:
C:\HeroLab\HeroLab.exe
1.0.g 107
ACCESS VIOLATION
Address: 0x004329e1
Type: bad read

Not much for me to troubleshoot with... any suggestions? I'm sure there's a slicker way to do this with validations scripts and all kinds of cool stuff, but I'm just trying to get a character print out for the DM at this point.
 
At 06:06 PM 2/8/2007, you wrote:

>I'm trying to implement the Elf Wizard Racial Substitution Level for
>1st level from Races of the Wild, pg. 157. It's essentially a Wizard
>that adds a class special called Generalist Wizardry. Generalist
>Wizardry behaves like a weaker version of school specialization, but
>instead of losing schools, the restriction is the character must be
>an Elf. Instead of preparing a free specialty spell of each level,
>the character can prepare a single free spell of the highest level
>the Elf Wizard can cast.
>
>Lacking the knowledge to attempt a deep level, script heavy
>implementation, I tried a sledge hammer approach of creating a
>Wizard Class variant that would access a Wizard Class Helper variant
>with modified spells per level.
>
>The Wizard Class itself didn't undergo any significant changes, just
>Name, Unique Id, Description Text, Bootstrap to the helper variant,
>and Linkage to the helper variant.
>
>In the Wizard Class Helper variant, I didn't see a way to edit
>spells per level in the Editor, so I hacked the XML file and
>incremented the number of highlest level spell slots for each level by one.
>
>The custom file seems to compile fine, but when I select a level in
>"Elf Wizard", Hero Lab shuts down with the following log:
>C:\HeroLab\HeroLab.exe
>1.0.g 107
>ACCESS VIOLATION
>Address: 0x004329e1
>Type: bad read
>
>Not much for me to troubleshoot with... any suggestions? I'm sure
>there's a slicker way to do this with validations scripts and all
>kinds of cool stuff, but I'm just trying to get a character print
>out for the DM at this point.


If you look at the new wizard class helper object in the editor, and
scroll down the list of items, you should see a "Spells per Level"
entry. Clicking the "Edit" button should allow you to edit the spells
per level there. Otherwise, it sounds like you've done everything
correctly, so I'm not sure why the crash is happening.


Would you mind sending your data files to colen@wolflair.com? I'd
like to try and work out what's causing that crash, so we can stop it
happening in the future.


Thanks, and sorry for the inconvenience,



--
Colen McAlister (colen@wolflair.com)
Chief Engineer, Lone Wolf Development
http://www.wolflair.com/
 
Heh, scrollbar... didn’t notice it before but got it now... too used to the standard gray scrollbar I guess. I sent the file.

If you're familiar with Racial Substitution Levels, I'm wondering whether you have recommendations for more integrated ways to implement them.

Thanks!
 
At 12:54 PM 2/9/2007, you wrote:

>Heh, scrollbar... didn't notice it before but got it now... too used
>to the standard gray scrollbar I guess. I sent the file.


Thanks. I've noted the bug, and it should be fixed in the next update.


The easy way to fix the problem is to make the new 'elf wizard'
helper replace the current wizard helper (by specifying "cHelpWiz" in
the "Replaces Id" box in the editor). This will make everything work
fine, with the downside that all wizards you create will be Elf
Wizards (and get the extra spell).




The harder option is to delete the "Elf Wizard" helper. Then, on the
Elf Wizard class level, change the bootstrap and the linkage to
reference the original "cHelpWiz" object, and add the following script:

phase - UserPostAt
priority - any
script:

var level as number
level = hero.child[cHelpWiz].tagcount[Hero.Arcane] - 1
hero.child[cHelpWiz].field[cMemMax].arrayvalue[level] =
hero.child[cHelpWiz].field[cMemMax].arrayvalue[level] + 1



This will get less complicated once I add more support for stuff to
the data files, but right now here's what it's doing:

level = hero.child[cHelpWiz].tagcount[Hero.Arcane] - 1

Set 'level' to the highest level of arcane spells the Wizard class
can cast. The -1 is there because if you can cast level 0 arcane
spells, you have 1 Arcane tag; level 1 arcane spells, you have 2
arcane tags; etc.


hero.child[cHelpWiz].field[cMemMax].arrayvalue[level] =
hero.child[cHelpWiz].field[cMemMax].arrayvalue[level] + 1

The 'cMemMax' field is a 10-element array that holds the number of
spells you can memorize for each level. We already know what the
highest level of spell we can cast is, so increase that value by one.


Hopefully this makes sense. If not, let me know. I'll also be adding
functionality to make this easier in a future release.


>If you're familiar with Racial Substitution Levels, I'm wondering
>whether you have recommendations for more integrated ways to implement them.


We have them 'designed in' to the data structures, but the way to
define them isn't implemented yet. Basically the Basics tab will have
another small table between the 'class levels' table and 'increase
attributes' table, where you'll select racial substition levels. That
way you can define the levels separately from class levels.


Hope this helps,



--
Colen McAlister (colen@wolflair.com)
Chief Engineer, Lone Wolf Development
http://www.wolflair.com/
 
This is a different question but on the same topic.

The Generalist Wizardry 1st level Elven Wizard Racial Substitution Level states:

"...At each new wizard level, she gains one extra spell of any spell level that she can cast."

I looked (admittedly not extensively) for a tag in the wizard list that mentioned how many free spells they get each level and couldn't find it. I think it should be as simple as changing a "2" to a "3".

Thanks!
 
This is a different question but on the same topic.

The Generalist Wizardry 1st level Elven Wizard Racial Substitution Level states:

"...At each new wizard level, she gains one extra spell of any spell level that she can cast."

I looked (admittedly not extensively) for a tag in the wizard list that mentioned how many free spells they get each level and couldn't find it. I think it should be as simple as changing a "2" to a "3".

Thanks!
 
jamestkirk.land wrote:
>
>
> This is a different question but on the same topic.
>
> The Generalist Wizardry 1st level Elven Wizard Racial Substitution Level
> states:
>
> "...At each new wizard level, she gains one extra spell of any spell
> level that she can cast."
>
> I looked (admittedly not extensively) for a tag in the wizard list that
> mentioned how many free spells they get each level and couldn't find it.
> I think it should be as simple as changing a "2" to a "3".


I'm not sure I understand this. If I'm reading it correctly, at every
single Wizard level, you get to cast an extra spell per day? So that's
20 extra spells by the time you get to 20th level? Or does it mean
something else?



--
Colen McAlister, colen@wolflair.com
Chief Engineer, Lone Wolf Development
 
There are two parts. One is gaining an extra spell for the Elf Wizard's spellbook (i.e. three per level instead of two as listed in PHB on pg 57), but that's handled easily with the normal spellbook functionality. The second part is what needs to be modeled using the Hero Lab Editor... "The elf wizard may also prepare one additional spell of her high highest spell level each day."

For example, a 1st level Elf Wizard can cast 3 zero level spells and 2 1st level spells each day, and a 5th level Elf Wizard can cast 4 zero level spells, 4 1st level spells, 3 2nd level spells, 3 3rd level spells and 2 4th level spells each day (not including INT bonuses, etc.). In other words Generalist Wizardry only adds one extra spell per day to the casting total, but it's always of the highlest level the Elf Wizard can cast.

Hope that helps.
 
chogenkiboy wrote:
>
>
> There are two parts. One is gaining an extra spell for the Elf Wizard's
> spellbook (i.e. three per level instead of two as listed in PHB on pg
> 57), but that's handled easily with the normal spellbook functionality.
> The second part is what needs to be modeled using the Hero Lab Editor...
> "The elf wizard may also prepare one additional spell of her high
> highest spell level each day."
>
> For example, a 1st level Elf Wizard can cast 3 zero level spells and 2
> 1st level spells each day, and a 5th level Elf Wizard can cast 4 zero
> level spells, 4 1st level spells, 3 2nd level spells, 3 3rd level spells
> and 2 4th level spells each day (not including INT bonuses, etc.). In
> other words Generalist Wizardry only adds one extra spell per day to the
> casting total, but it's always of the highlest level the Elf Wizard can
> cast.


The easiest way to handle that "automatically" would be to just create a
new Wizard class in the editor, with the spell counts changed to give 1
extra spell of the highest levels.

In the next version of Hero Lab, you'll also be able to add an In-Play
Adjustment to increase the number of spells you're allowed for a certain
spell level.

Finally, you could add a feat that searched the array of spells the
Wizard could cast, and added 1 to the highest level. That would be the
most complex thing to do, but once you did it it would work
automatically without you changing an adjustment every few levels.


--
Colen McAlister, colen@wolflair.com
Chief Engineer, Lone Wolf Development
 
Colen said:
At 12:54 PM 2/9/2007, you wrote:

>If you're familiar with Racial Substitution Levels, I'm wondering
>whether you have recommendations for more integrated ways to implement them.


We have them 'designed in' to the data structures, but the way to
define them isn't implemented yet. Basically the Basics tab will have
another small table between the 'class levels' table and 'increase
attributes' table, where you'll select racial substition levels. That
way you can define the levels separately from class levels.


Hope this helps,



So I was wondering if the racial substitution thing ever got worked out in a uniform way? I have a dwarven cleric that took a substitution level to smite giants rather than turn undead, and I'd like to put that in hero-lab, but as of now I have no idea how.
 
Lawful_g wrote:
>
>
> Can I get a word on when substitution levels might be integrated into
> hero lab?


Unfortunately, to do racial substitution levels properly will require a
lot of work, and with the authoring kit coming out soon we don't have
the time to fit it in right now. :( Hopefully we'll be able to get them
implemented at some point after the authoring kit comes out. Until then,
the easiest way to handle them is simply to make a copy of the class and
make the appropriate changes to it.


Sorry for the inconvenience,

--
Colen McAlister, colen@wolflair.com
 
you could add a feat that searched the array of spells the
Wizard could cast, and added 1 to the highest level. That would be the
most complex thing to do, but once you did it it would work
automatically without you changing an adjustment every few levels.

I'd like to take a stab at this, but I haven't delved deep enough into HL scripting or HL file structures to know where to start off the top of my head... any hints?

Thanks
 
chogenkiboy wrote:
>
>
> *Quote:*
>
> you could add a feat that searched the array of spells the
> Wizard could cast, and added 1 to the highest level. That would be the
> most complex thing to do, but once you did it it would work
> automatically without you changing an adjustment every few levels.
>
>
>
> I'd like to take a stab at this, but I haven't delved deep enough into
> HL scripting or HL file structures to know where to start off the top of
> my head... any hints?


This script in the "Post-Attributes (User)" phase should do the trick:


~ Find the highest spell level we can use
var i as number
var highest as number
for i = 0 to 9
if (hero.child[cHelpWiz].field[cMemMax].arrayvalue <> 0) then
highest = i
endif
next

~ Add 1 spell to that level
hero.child[cHelpWiz].field[cMemMax].arrayvalue[highest] += 1



Hope this helps!

--
Colen McAlister, colen@wolflair.com
 
I noticed another way handle the Generalist Wizardry bonus spell per day using the Adjust tab:
Add a Permanent Adjustment for Spells Cast Per Day, select Wizard and set Cast@Lvl to the highest spell level the Elf Wizard currently knows... needs to be updated anytime the Elf Wizard gains access to a new spell level, but this option has the advantage that the mechanics are already built into Hero Lab... I'll probably still toy with implementing a self-managing feat, but I thought I'd share this workaround.
Cheers
 
Back
Top