• 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

Help with Modifying 3.5

Ack, these house rules are becoming a larger project the more I go into it. I've got bonus feats on two of the other base classes, so I have to overwrite some feats to tag them for such, sigh (or do I?). Then the classes, then redo the armors, then add additional items and weapons, then add magic items, then add monsters, then prestige classes, well you get the point. More than I thought, might take a few weeks to complete.

I also have to add feats from some of the supplemental books, and I have a question about that. I want to add a few that need to make choices, and I'm not entirely sure how to go about it. Here they are:

Extra Slot - Allows for an extra spell slot of up to one level lower than your maximum level spell you can cast. Need to be able to choose a level to add the slot to.

Extra Spell - Similar to above, but allows a sorcerer or bard an extra spell known instead. Still need to be able to choose a level to add the spell to, as well as choosing that spell.

Extra Smiting - Adds two more smiting attacks. Have to choose which smiting attack to add additional uses to.

Greater Resiliency - Adds 1 to damage reduction. Have to be able to choose which DR if more than one is present.

Does this have something to do with the Freeform Edit that is part of the selection process? Any help here would be greatly appreciated, since none of the current feats really help in regards to these. Thanks.
 
All 4 of those feats are includede in the Community Custom files, among the things I wrote. You may want to look at them for examples, although as I recall the first two don't work as well as I would like, not limiting to 1 level below your max spl level.

Anyway, look to those for examples.
 
Pardon me for being a little bit dense here, but I've only had this product for 2 weeks, and while I'm getting the hang of it, I'm missing vital information IMHO. So here are a few questions.

Is there a resource for the scripting language? Or is that in the Authoring Kit (a general search didn't turn anything up, per se)?

On the right side of the editor are some advanced things. I've been using eval scripts primarily, eval rules ONLY when I want to output a message, expr-reqs for pre-requisites (and I'm just getting by at that), and the rest is baffling to me. What are the various pick-reqs, expr-reqs, pre-reqs, field, containerreq, Gizmo, and Minion buttons for specifically?

Does *Hidden require an HL restart before things get hidden? I gave up on trying to hide things when they never went away.

How do I determine a source id? Is that an actual source, say like Pathfinder, or something like that?

What's the difference between Uniqueness of Only Once and Unique?

What is this pIsOn I keep seeing everywhere? I can't find a source for it, though honestly haven't been looking that hard.

How can I find out all the tags/fields that COULD be on a hero (rather than just finding out the ones that are on a hero ala the Show Hero Tags)?

Well, that's all I can think of for now, but I'm just lost on a majority of these.
 
1 - There is a herolab wiki site, but I don't know the address, you can google it I am sure.

2 - pick-reqs are like expr reqs I think, I have only ever seen languages bootstrapped through there as a pre req for prestige classes (Dragon Disciple and Draconic).

expr reqs are simple pre reqs that can be written in 1 line of code,

pre reqs is for more complex requirements that require multiple conditions, foreaches, etc.

field lets you set the fields of the things directly rather than through scripts

containerreq I have never used or seen used, so I don't know. I would guess it checks the container (the thing that possesses this thing)

Gizmo specifies something to look at and pull information and traits from. For example specific magical weapons have a Gizmo for the mundane weapon that looks at crit range, damage, etc...

Minion I don't know, never used or seen used. I would guess lets you set up something subservient to the thing you are creating.

3 - Never used the Hidden mechanism, don't know.

4 - It is a source that you want the thing in, so that the hero will only have access to the thing if they have clicked that source in "Character -> Configure Hero" or you can also configure the hero when you start the portfolio. On the right side of the window is "Configure Hero Settings" Click on that and scroll down to say "Pathfinder - Rise of the Runelords". If you check that source all things from it are now available for selection in HL, such as feats, races, etc.

You can define new sources and look at a list of them in the editor. At the very bottom of anything you create there is a button called "Sources" you can hover over the ? to the right to get their ID

5 - I don't know, but if you pick the wrong one sometimes it will cause errors. Only Once is generally the safer pick.

6 - pIsOn is a field on many things, it represents whether a checkbox has been checked (= 1) or is not checked (= 0)

7 - Hard Drive -> Hero Lab -> Data -> d20 -> Source and look at the aug_tags.1st file, it is a list of all tags in the official herolab program, but for User created tags, they are spread around on whatever things define them.

Hope that helps.
 
The wiki Lawful_g mentioned is the second option in the editor's help menu.

Here's an example of the same rule ("Must know Draconic") as implemented as a pick-req:

Code:
lDraconic

As an expr-req:

Code:
childlives[lDraconic] <> 0

And as a pre-req:

Code:
if (childlives[lDraconic] <> 0) then
  @valid = 1
  endif

Expr-reqs are a stripped-down prereq that can only ever test a single expression. Pick-reqs are a stripped-down expr-req that can only check childlives[XXXXX] <> 0.

Pickreqs are almost never used (languages are the only example I can think of), since there's a chance that the thing you're looking for could be disabled by a template (the Zombie template disabling feats for example), or has been added by a class, but won't actually become active until you gain some more levels in that class. Instead, things add tags to the hero if they're active, and expr-reqs or pre-reqs are used to test for those tags. As usual, New (Copy) is the best way to figure out how to implement them - think of something that already exists that requires a thing of the same type, and see how it handles that pre-req.


If the containerreq of a thing fails, it will not be displayed in a list for selection, and will be made non-live if it's already on the character. Using containerreqs is very rare. The most common thing I can think of is when you want to say "Does not exist if source XXXXX is checked":

Code:
!source.XXXXX

If you want to add that to something that already exists, use the preclude tab instead of making a replacement with that containerreq.

Lawful_g, FYI - the "Condition" button on a bootstrap is effectively creating a new containerreq on the thing you're bootstrapping. Note that there's no way to test anything but the tags and fields on the hero from a containerreq - the condition knows what bootstrapped it, so it can test the tags and fields on that thing.

For examples of the Gizmo button, make copies of the things on the armor, magic and weapon, magic tabs - you'll have to use them exactly as specified - just change the weapon that's bootstrapped onto the gizmo.

For examples of the Minion button, make copies of the things on the Minion/Hireling tab.

You can apply your *Hidden entries by pressing ctrl-r in the main HL window in order to activate a quick reload, rather than having to switch game systems back to d20 or restart HL.

Only a single copy of a unique thing can exist on a character. If a thing is useronce, multiple copies can exist, but once a user adds one copy of something that's useronce, they can't add a second copy. Many categories of things have to be useronce, rather than unique, because they can be added by other things. For example, feats are all either useronce or non-unique so that if you add a class that grants that feat as a bonus feat at 3rd level, you're allowed to take that feat as a normal feat choice if you're only splashing a single level of that class (if it were unique, the presence of that bonus copy, waiting to become active, would prevent you from adding another copy).

Unless something is like Skill Focus, where the user can add as many copies as they like, useronce is generally the best bet, as Lawful_g said. You can also make copies of a half-dozen existing things from that tab to see what they tend to use.

Show hero fields (in the debug menu...floating info windows) shows all the fields that exist on the hero. Right-clicking on a thing that's on your character gives you the option of looking at the tags that are currently present or the current values for all the fields that exist on that thing.

As an amendment to what Lawful_g said about pIsOn, it only exists on adjustments - it stores the current state of the on/off checkbox.
 
Last edited:
Thanks Lawful_g and Mathias. That was greatly helpful and informative. But I'm being a dunderhead here, I actually did find that 1st file, and forgot where I had found it when I was originally rooting around the directory. Stupid memory. I also should have found the scripting language in the wiki, but for some reason I didn't. I think I might have been looking for it in some other form, which is why I couldn't find it before. I typed in scripting language for my search term this time, and I found it. Again, I was being dense apparently. And I was operating on about 3 hours sleep, thanks to HeroLab hooking me in (and the RW discussion, and the d20Pro system, which I am trying a trial version of). The rest I had no idea of, and I'm grateful to the both of you for taking the time to explain it to me. Thanks once again.

Unfortunately, I think this means I've done my skills wrong. Don't know, I'll have to look at it again tonight. I think I was using the pre-req area to write the code (making it a requisite for the class, which it isn't, it's just an option). Still, for some reason it was working fine, so maybe I'm mis-remembering. Stupid memory.
 
Last edited:
I finally got around to downloading the custom file set, very informative stuff. It doesn't have all the things I would like to codes, such as Extra Slot and Extra Spell, but I'm sure if I apply myself, I can find a way for it to work. I'm starting to get the hang of this whole thing. I'll keep you informed if I hit any snags.
 
Right when I think I've got most of this figured out, something comes along and baffles me. I looked at Extra Smiting in the d20 Community Files, and it works there. Here's the rub, I don't know WHY it works there. I did the same thing, nothing works. I've looked at Extra Smiting backwards and forwards, and I know I'm missing something. I just don't know what it is. I see all the User Tags that are from Smite Good, Smite Evil, Smite, Smite Choice, but this isn't telling me anything about how it knows the particular hero has Smite whatever on it. I just get a "nothing to choose" message, even with a Paladin picked as the hero. I'm just baffled on how this magic is happening in the Community File. Any help here?

I also noticed that the Paladin has two User tags, the Smite tag and the Smite Good tag. How did it get those? Guess I should put in the relevant 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

if (field[fChosen].ischosen <> 0) then
field[fChosen].chosen.field[hTotal].value += 2
endif

Plus there is a ftCandExpr field that holds the User.PickSmite (whatever that is) as well as in the Custom Expression in Item Selection.
 
Last edited:
So that smites from different sources would stack I created a base smite good, and smite evil ability. You can find them in the "Custom - Core Book Mods" user file, under the specials tab. The PickSmite User tag is on the special and serves as a target for the Extra Smiting feat.

The User.Smite and the User.SmiteEvil tags are there for pre-requisites, there are some feats that require you to be able to smite, and some that require either good or evil smiting.
 
Last edited:
I've notice some procedural calls in some of the scripts I've been perusing in order to make my own scripts. I'm not sure what they do. Does anyone have a list of the procedure calls I can make in the d20 system files, and what they do?
 
CalcValue is the only one I think exists that's for the use of users.

CalcValue is:


Code:
    ~ If we have Value tags assigned, see if the highest is higher than our
    ~ current value - if so, use it.
    field[Value].value = maximum(field[Value].value, tagmax[Value.?])
    ~ If we have a value of 0, hide ourselves
    if (field[Value].value = 0) then
      perform delete[Helper.ShowSpec]
      perform delete[Helper.ShowCharge]
      done
      endif

It's for specials like Darkvision, swim speed, DR, etc. whose values don't stack - if your race adds a swim speed of 30' and your prestige class adds a swim speed of 10', your swim speed is 30', not 40'. That's handled by having each of the things that adds swim add it with a Value.# tag. It also means that you can assign a DR to a character and not worry about making it a conditional bootstrap - you can use a script to assign a value or not, depending on the situation, and the DR will hide itself if its value is 0.
 
CalcValue is the only one I think exists that's for the use of users.

CalcValue is:


Code:
    ~ If we have Value tags assigned, see if the highest is higher than our
    ~ current value - if so, use it.
    field[Value].value = maximum(field[Value].value, tagmax[Value.?])
    ~ If we have a value of 0, hide ourselves
    if (field[Value].value = 0) then
      perform delete[Helper.ShowSpec]
      perform delete[Helper.ShowCharge]
      done
      endif

It's for specials like Darkvision, swim speed, DR, etc. whose values don't stack - if your race adds a swim speed of 30' and your prestige class adds a swim speed of 10', your swim speed is 30', not 40'. That's handled by having each of the things that adds swim add it with a Value.# tag. It also means that you can assign a DR to a character and not worry about making it a conditional bootstrap - you can use a script to assign a value or not, depending on the situation, and the DR will hide itself if its value is 0.

I assume the value that is looked at is the current context? If the current context is a hero, how does it know I'm referring to, say, Speed of the hero?
 
CalcValue can only be used if you're on a thing that has the Value field (feats, traits, skill tricks, class specials, specials, racial specials, etc.), or you'll get errors. It only looks at and modifies the Value field and tags of the pick its running from.
 
I noticed on HeroLab startup, that you can select No Cross-Class Skill Penalty. I know this applies to all cross-class skills across classes, but is there a way that I can turn this on for only one specific cross-class skill.

For example, absurd as it is, it gets the point across. If I wanted to allow all of a Fighter's cross-class skills to work normally except for Knowledge: Arcana, where I wanted that cross-class skill to be able to have No Cross-Class Skill Penalty, is there a way I can do that just for Knowledge: Arcana on the Fighter?
 
I believe there is a feat I made in the community files that does a similar thing for Spot and Listen. Look at Guerilla Scout.
 
Cool, this will essentially do the same thing, I would guess. I've also got another work around that works too. I was just wondering if there was some kind of flag that could be set for skills individually, or is that No Cross-Class Skill Penalty essentially doing what Lawful_g's code is doing, setting the Ranks equal to the Points spent?
 
No Cross-Class Skill Penalty essentially doing what Lawful_g's code is doing, setting the Ranks equal to the Points spent?

I used LG's code for a similar thing, but the character house rule thing modifies the internal code to multiply by 1.0 instead of 0.5 across the board.
 
Back
Top