Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - d20 System

Notices

Reply
 
Thread Tools Display Modes
Alzrius
Junior Member
 
Join Date: Jul 2008
Posts: 8

Old December 31st, 2008, 12:36 PM
Hey everyone!

I finally got a copy of Hero Lab, and I'm very excited to be using it! I only have a slight coding background, however, so I'm not at all certain how to start properly adding in various new materials that I want to incorporate. The tutorial is great for the basic stuff, but things like "boostraps" and "pick-reqs" are still pretty unintelligible to me.

The first thing I'm trying to add is the Practiced Spellcaster feat, from Complete Arcane/Divine. I used Spell Focus as a starting point, thinking it'd help since, like Practiced Spellcaster, it improves one's caster level.

So far, I was able to successfully add in the prerequisite (Spellcraft 4 ranks), but because I used Spell Focus as a starting point, it still has 1 eval script and 1 eval rule remaining.

I'm not sure what to do about those (and only have some idea about what they are). Basically, I want to incorporate the effects of Practiced Spellcaster, and remove any lingering effects from Spell Focus, but I'm not sure what (if any) coding to do, or where. Any help anyone can provide would be appreciated.

Thanks!
Alzrius is offline   #1 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,207

Old January 1st, 2009, 01:32 AM
Remember to describe what you're trying to accomplish in your message - my copy of complete arcane is rather buried, so I don't know what you're trying to do.

The eval rule in spell focus works to make sure that you've selected a school and that if you have the spell focus feat multiple times, to give an error if you select the same school twice.

The eval script's main function is to add a tag to the hero so that it's easier to test for the presence of spell focus in a specific school.

If your feat doesn't add any game effects that can be tracked within HL, you can probably go ahead and delete the eval rule and eval script, and just leave your feat as text-only.
Mathias is offline   #2 Reply With Quote
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old January 1st, 2009, 06:50 AM
Since Practiced Spellcaster adds from 0-4 caster levels depending on how many non-spellcaster levels you have, I'm sure it'd need an eval script to determine that number for the character. How would you do something like that?

Working on -
  • (SWADE) WIP Savage Rifts
  • Savage Rifts (Deluxe): Update link in This post
  • Star Trek Adventures: Update link in This post
TCArknight is offline   #3 Reply With Quote
Alzrius
Junior Member
 
Join Date: Jul 2008
Posts: 8

Old January 1st, 2009, 07:27 AM
Quote:
Originally Posted by mgehl
Remember to describe what you're trying to accomplish in your message - my copy of complete arcane is rather buried, so I don't know what you're trying to do.
Sorry about that; I assumed everyone would have that handy. D'oh!

Practiced Spellcaster increases your caster level by as much as 4 in a spellcasting class, but only if you have at least 4 Hit Die/levels that are non-spellcasting.

A good example is a Fighter 5/Wizard 4 who takes the feat. Since he has 5 Fighter levels, which aren't spellcasting, he'd gain no new spells per day, etc. but his caster level for the spells he did cast would be as though he were an 8th-level Wizard. That said, if he'd only been a Fighter 3/Wizard 4, he'd only have gained +3 from the feat, since he only had 3 non-spellcaster Hit Dice.

The feat can be selected multiple times if you have multiple spellcasting classes (e.g. a Cleric 4/Wizard 4).

I'm fairly certain caster level is something that HL tracks, so I wanted to ask here about that.

On a broader note, is there any sort of tutorial available for the finer aspects of coding in HL? I'd prefer to learn how to do this sort of thing myself rather than publicly ask for help with each change I want to make.
Alzrius is offline   #4 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,207

Old January 1st, 2009, 09:41 AM
Didn't want to start simply, did you.

First, to see caster level (since it's currently not displayed), go to the development menu, check "Enable Data File Debugging", then go to the bottom of that menu, "Floating info Windows", "Show Selection Fields", and choose the helper object for the class you're interested in. For example:
Cleric (cHelpClr) or Wizard (cHelpWiz)

I've only gotten some of the feat. I'm stumped on the rest.

On your feat, set "Restrict To..." to "Picks on Hero"
Set "Select From..." to "Classes"

click on the "Eval Scripts" button, set the phase to "Pre-Levels (Users)", and put the following in the script itself:
Code:
      ~ If we're disabled, do nothing
      if (tagis[Helper.FtDisable] <> 0) then
        done
        endif

      ~ If we haven't chosen anything, get out now
      if (field[fChosen].ischosen = 0) then
        done
        endif

field[fChosen].chosen.field[cMagicLev].value +=4
The first two sections I copied from weapon focus. What I've written there will add 4 to the caster level, no matter the total level.

The problem with what I've written is in order to set the caster level equal to the minimum of (caster level +4, character level) , you need to know what the caster level is before your minimum() function. But, if you want any additions to the caster level to be calculated, you need to add them before the caster level is set.

I'm afraid Colen will have to help you with making a feat that doesn't add 4 to caster level no matter what.

I did think of a sort-of work-around.

On the feat, check the "Show in Charges List?" checkbox and set "Total Charges" to 4.

Replace the last line of the script with:
Code:
field[fChosen].chosen.field[cMagicLev].value +=field[hUsed].value
Now, once you add the feat, go to the "In Play" tab of the character, and use the selector to choose how many caster levels to add. This requires the user to set the number to add to the caster level, which is not perfect, but is better than adding 4 no matter what.
Mathias is offline   #5 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,207

Old January 1st, 2009, 09:49 AM
In terms of tutorials, the way I learned was to look for other things in the game that are handled similarly. For example, to learn about the selector, look at feats like weapon focus, skill focus, and spell focus - none of them use the class selector I'm using in this feat, but you can use them to learn about selectors in general.

To learn about how to use bootstraps, in the editor, open a file, go to the source folder within the default directory, and open srd_monstrous.dat - that contains all the non-standard races, and races and classes are the things that make the most use of bootstraps. Races are easier to decipher than classes, so page through all the monstrous races, and see what sorts of things they're bootstrapping.

Don't worry about pick-reqs yet - that's a very advanced topic.

Also, read through this forum. A lot of solutions are already here, and even if its not exactly what you're looking for, it might point you in the right direction.
Mathias is offline   #6 Reply With Quote
Alzrius
Junior Member
 
Join Date: Jul 2008
Posts: 8

Old January 1st, 2009, 12:11 PM
Quote:
Originally Posted by mgehl
Didn't want to start simply, did you.
Yeah...I don't know what I was thinking beginning with this. I always did like to leap straight into the deep end of the pool.

Quote:
Originally Posted by mgehl
On your feat, set "Restrict To..." to "Picks on Hero"
Set "Select From..." to "Classes"
I just wanted to check that this won't interfere with using the feat in regards to characters that apply it against their natural Hit Dice. For example, a frost giant cleric 6 should be able to take the feat to increase his cleric spellcasting level, since he has 14 natural, non-spellcasting Hit Dice. On the flipside, a creature with natural spellcasting ability and non-spellcasting class levels should be able to use it also, e.g. a ghaele fighter 5 would be able to increase her natural spellcasting level (as a 14th-level cleric normally) by 4 with this feat, due to her fighter levels - I know that particular race isn't in HL yet, but I'm thinking ahead.

I just want to make sure that setting it to "Classes" won't make for a restriction later on.

Quote:
Originally Posted by mgehl
The first two sections I copied from weapon focus. What I've written there will add 4 to the caster level, no matter the total level.
Should I keep the unique id as "fChosen" and not the unique id tag I made for Practiced Spellcaster?

Quote:
Originally Posted by mgehl
The problem with what I've written is in order to set the caster level equal to the minimum of (caster level +4, character level) , you need to know what the caster level is before your minimum() function. But, if you want any additions to the caster level to be calculated, you need to add them before the caster level is set.
Will it apply to all spellcaster levels, or just an indicated one?

Quote:
Originally Posted by mgehl
In terms of tutorials, the way I learned was to look for other things in the game that are handled similarly. For example, to learn about the selector, look at feats like weapon focus, skill focus, and spell focus - none of them use the class selector I'm using in this feat, but you can use them to learn about selectors in general.

To learn about how to use bootstraps, in the editor, open a file, go to the source folder within the default directory, and open srd_monstrous.dat - that contains all the non-standard races, and races and classes are the things that make the most use of bootstraps. Races are easier to decipher than classes, so page through all the monstrous races, and see what sorts of things they're bootstrapping.

Don't worry about pick-reqs yet - that's a very advanced topic.

Also, read through this forum. A lot of solutions are already here, and even if its not exactly what you're looking for, it might point you in the right direction.
Yeah, I've sort of been doing that already, but this had me stumped, which is a bit demoralizing for my first time out. It's a shame to realize just how much I don't understand about coding in new material by hand, since I really like HL and want to understand how to do this better.

Thanks for your help!
Alzrius is offline   #7 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,207

Old January 1st, 2009, 07:54 PM
Quote:
Quote:
Originally Posted by mgehl
On your feat, set "Restrict To..." to "Picks on Hero"
Set "Select From..." to "Classes"
I just wanted to check that this won't interfere with using the feat in regards to characters that apply it against their natural Hit Dice. For example, a frost giant cleric 6 should be able to take the feat to increase his cleric spellcasting level, since he has 14 natural, non-spellcasting Hit Dice. On the flipside, a creature with natural spellcasting ability and non-spellcasting class levels should be able to use it also, e.g. a ghaele fighter 5 would be able to increase her natural spellcasting level (as a 14th-level cleric normally) by 4 with this feat, due to her fighter levels - I know that particular race isn't in HL yet, but I'm thinking ahead.

I just want to make sure that setting it to "Classes" won't make for a restriction later on.
The rakshasa is an existing race with spellcasting capability - test it on that. The frost giant cleric won't notice it, since they'll select the feat for their cleric class, rather than their HP.

Quote:
Quote:
Originally Posted by mgehl
The first two sections I copied from weapon focus. What I've written there will add 4 to the caster level, no matter the total level.
Should I keep the unique id as "fChosen" and not the unique id tag I made for Practiced Spellcaster?
field[fChosen].value is the way to reference the class that was chosen, not the name of the feat. I can't think of anything in this scripting language that refers to itself by name (you'll never see a feat's name in its own script).

Quote:
Quote:
Originally Posted by mgehl
The problem with what I've written is in order to set the caster level equal to the minimum of (caster level +4, character level) , you need to know what the caster level is before your minimum() function. But, if you want any additions to the caster level to be calculated, you need to add them before the caster level is set.
Will it apply to all spellcaster levels, or just an indicated one?
The code I gave you applies only to the selected class.
Quote:

Don't worry about pick-reqs yet - that's a very advanced topic.
I realized after I replied that you might have meant pre-reqs, rather than pick-reqs (they're different things). To learn about pre-reqs, study the prestige classes, then the feats - that's where they're most common.
Mathias is offline   #8 Reply With Quote
Alzrius
Junior Member
 
Join Date: Jul 2008
Posts: 8

Old January 2nd, 2009, 05:52 AM
Quote:
Originally Posted by mgehl
First, to see caster level (since it's currently not displayed), go to the development menu, check "Enable Data File Debugging", then go to the bottom of that menu, "Floating info Windows", "Show Selection Fields", and choose the helper object for the class you're interested in. For example:
Cleric (cHelpClr) or Wizard (cHelpWiz)
The above was the only part I had a bit of trouble with, simply because the things you outlined weren't choices in that particular window. I didn't see anything there that I could specifically set regarding caster level.

That said, the rest of the scripts you wrote worked great so far! They tested fine, and integrated without any problems. Thanks for your help!

Quote:
Originally Posted by mgehl
I realized after I replied that you might have meant pre-reqs, rather than pick-reqs (they're different things). To learn about pre-reqs, study the prestige classes, then the feats - that's where they're most common.
I did mean pre-reqs, yeah (I'm honestly not sure what pick-reqs are at this point). As you said though, figuring pre-reqs out isn't too difficult, since examples abound. Practiced Spellcaster has a prerequisite of Spellcraft 4 ranks, for example, but I managed to get that in there okay.
Alzrius is offline   #9 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,207

Old January 2nd, 2009, 09:59 AM
Quote:
Originally Posted by Alzrius
Quote:
Originally Posted by mgehl
First, to see caster level (since it's currently not displayed), go to the development menu, check "Enable Data File Debugging", then go to the bottom of that menu, "Floating info Windows", "Show Selection Fields", and choose the helper object for the class you're interested in. For example:
Cleric (cHelpClr) or Wizard (cHelpWiz)
The above was the only part I had a bit of trouble with, simply because the things you outlined weren't choices in that particular window. I didn't see anything there that I could specifically set regarding caster level.
What I'm directing you to isn't a way to show/hide the caster level - what you're doing is looking at the list of variables that applies to the class, and what their ending values are.

The development menu is one of those at the top of the program.
Mathias is offline   #10 Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 06:09 PM.


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