Lone Wolf Development Forums

Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - d20 System (http://forums.wolflair.com/forumdisplay.php?f=46)
-   -   Help with Modifying 3.5 (http://forums.wolflair.com/showthread.php?t=12170)

Kendall-DM January 25th, 2011 11:29 PM

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.

Lawful_g January 26th, 2011 12:05 AM

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.

Kendall-DM January 26th, 2011 12:25 AM

Nevermind.

Kendall-DM January 26th, 2011 01:53 PM

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.

Lawful_g January 26th, 2011 02:18 PM

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.

Mathias January 26th, 2011 03:27 PM

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.

Kendall-DM January 26th, 2011 07:51 PM

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.

Kendall-DM January 27th, 2011 03:00 PM

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.

Kendall-DM January 28th, 2011 05:09 PM

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.

Lawful_g January 28th, 2011 06:10 PM

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.

Kendall-DM January 30th, 2011 10:59 AM

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?

Lawful_g January 30th, 2011 12:16 PM

Could you define what a procedural call is?

Kendall-DM January 30th, 2011 12:43 PM

For example, in xSmiteEvil, there is a procedure call:

call CalcValue

This is a call to a procedure. That's what I'm referring to.

Mathias January 30th, 2011 02:04 PM

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.

Kendall-DM January 31st, 2011 01:45 PM

Quote:

Originally Posted by Mathias (Post 51201)
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?

Mathias January 31st, 2011 01:48 PM

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.

Kendall-DM February 11th, 2011 05:11 PM

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?

Lawful_g February 11th, 2011 06:05 PM

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.

Kendall-DM February 12th, 2011 07:58 AM

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?

risner February 12th, 2011 10:32 AM

Quote:

Originally Posted by Kendall-DM (Post 51995)
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.

Kendall-DM February 12th, 2011 11:18 AM

I've been working with some of the more difficult feats to make work. Two of those are Extra Spell (which adds an extra spell known to a sorcerer, for instance) and Extra Slot (which adds an extra spell that can be cast per day). I see that the Adjustment tab has the ability to do this, and I looked into it and noticed that there is a piece of code I like.

spelllevel = field[pSpellLvl].value

Where does pSpellLvl come from? I can't find it anywhere.

This piece of code allows there to be a chooser menu of spell levels. Obviously, I can't use this in Feat creation, but is there something similar in creating Feats that will? Actually, it's a little more complex than that, I would like to be able to choose that spell level maximum from the spell level maximum that the class can cast (I know how to get the Class chooser menu, that's built in)?

Here's what I want to do, I want to be able to choose the class that I'm adding the feat to (that's been done) and then check against that class's maximum spell level that it can cast, and choose from those spell levels. I see that the Hero has tags for Arcane and Divine that I can count, but I have no way of knowing if that caster Class in Arcane or Divine, much less be able to differentiate between Bard/Sorcerer or Ranger/Druid spell levels, since they don't follow the same methodology. Thanks in advance.

Kendall-DM February 12th, 2011 01:35 PM

Quote:

Originally Posted by Kendall-DM (Post 52014)
I've been working with some of the more difficult feats to make work. Two of those are Extra Spell (which adds an extra spell known to a sorcerer, for instance) and Extra Slot (which adds an extra spell that can be cast per day). I see that the Adjustment tab has the ability to do this, and I looked into it and noticed that there is a piece of code I like.

spelllevel = field[pSpellLvl].value

Where does pSpellLvl come from? I can't find it anywhere.

This piece of code allows there to be a chooser menu of spell levels. Obviously, I can't use this in Feat creation, but is there something similar in creating Feats that will? Actually, it's a little more complex than that, I would like to be able to choose that spell level maximum from the spell level maximum that the class can cast (I know how to get the Class chooser menu, that's built in)?

Here's what I want to do, I want to be able to choose the class that I'm adding the feat to (that's been done) and then check against that class's maximum spell level that it can cast, and choose from those spell levels. I see that the Hero has tags for Arcane and Divine that I can count, but I have no way of knowing if that caster Class in Arcane or Divine, much less be able to differentiate between Bard/Sorcerer or Ranger/Druid spell levels, since they don't follow the same methodology. Thanks in advance.

Of course, the problem I'm seeing with this is, unlike Adjustments, I don't have a second field available to choose the spell level after choosing the Class. I can make the feat add +1 to spells known for Extra Spell at one level lower than what can be known by the caster, but it adds it to ALL the levels below the maximum spell level, sigh. Still working on it, but any help would be appreciated.

Kendall-DM February 14th, 2011 10:00 PM

Crap, I made some changes to my files and remade my classes and now I'm getting that doubled class tab again. I'm getting the old class tab and the new class tab, even though I've replaced the helper id and the class id. I can't figure this out, as I want to replace the classes with my classes, and I can't remember how to fix this. I thought it was just tied to the Replaces Thing Id, but I've done that and they are still showing up. Not sure how to get rid of this.

Kendall-DM February 15th, 2011 10:11 AM

Bump. I can't solve this double class tab thing.

risner February 15th, 2011 10:15 AM

Quote:

Originally Posted by Kendall-DM (Post 52140)
Bump. I can't solve this double class tab thing.

I don't follow you.

You mean you see it listed twice in the Class or Class Level tab?

If so, delete one?

Kendall-DM February 15th, 2011 10:20 AM

No, I've replaced one class with my version of the same class using the Editor. I've used the Replace Things Id for both the Class and Class Level. However, when I get back into HL, when I chose that class, it gives me two tabs of the same Class when I leveled, one is mine, and one is the previous version. I had this solved before, I just can't remember what I did, and all I can recall was the Replace Things Id as the culprit. I've done that, restarted HL, and I'm still getting the same problem. That is what I am talking about.

Sendric February 15th, 2011 10:25 AM

Did you do the replace thing id in more than one place? ie Class and Class Level?

Kendall-DM February 15th, 2011 10:32 AM

Yes, did both.

Sendric February 15th, 2011 10:49 AM

Ok. i just re-created it by copying the Wizard class. I think what you need to do is actually remove the "Replaces Thing ID" from the Class, but keep the one for Class Level.

Kendall-DM February 15th, 2011 11:01 AM

Ok, that gets rid of the extra tab, but creates an error in cBbnIllit when trying to access the illiteracy. Any clues?

Sendric February 15th, 2011 11:22 AM

No clue. I just created a second Barbarian class that replaces the original, and didn't get any errors.

Kendall-DM February 15th, 2011 11:30 AM

Well, crap. Give me a step by step how you did it, so as I may compare how I did it. I just have no idea. Same thing is happening with each class I create, some first level ability is causing an error in each. Annoying.

Kendall-DM February 15th, 2011 11:40 AM

Nevermind, I figured it out. Yeesh, you have to jump through hoops with this. You do things out of order, things blow up. Essentially, you can't let the files reload, and you have to Replace Things Id on the Class Level tab first before the Class tab (if I do it the other way, I get the errors). Then remove it from the Class tab after saving and testing it. Thank god, I thought I was never going to get this to work again.

Kendall-DM February 15th, 2011 01:08 PM

3 Attachment(s)
Actually, I've found something out. The error does not appear UNTIL you reload the files. Then the errors appear. So, create a Barbarian fine, but then reload the files with the newly created Barbarian and see if you get these errors or not. I just can't track down where it is coming from, it's the Barbarian's illiteracy, the Bards "hBrdMusic" which I have no idea what it is. Only these two classes do this, and I don't know why. All the other classes work fine using the same method of creation, just not these. What the hell is going on with this, is this just a bug on my end? And how do I track it down? Anyone? Mathias, you come across this at any time?

I've included three screenshots. The first are the errors on Barbarians, Bards get the hBrdMusic error in addition to the table errors here. All the other classes are just getting the table errors now. All I've done is reload HL, and these cropped up. The last two just shows you that I am doing the correct thing in the Editor.

NEW INFO: The table error is being caused by my bootstrapping a custom ability to the class. Why it is happening is baffling me.

Kendall-DM February 15th, 2011 02:40 PM

2 Attachment(s)
Solved the table problem, I didn't realize I had to designate things as user content under source. That fixed the problem. Still having the problem with Barbarians and Bards, screenshots included.

Lawful_g February 15th, 2011 03:11 PM

Each of those errors means your class is looking for something in an eval script, but the thing does not exist on the hero.

Barbarian - Bootstrap the kLiterBbn skill to your class helper, that way when it is added the eval script in the class ability "cBbnIllit" will find it.

Bard - When you replaced the Class Helper for Bard you had to have changed the unique ID, the class ability "hBrdMusic" is searching for the old unique ID. Make a copy of hBrdMusic that replaces the old one. Go into the eval script on your copy and change all references to cHelpBrd to whatever the Unique ID of your new bard class helper is.

I think that should fix it.

Kendall-DM February 15th, 2011 03:22 PM

Ok, I had seen the hBrdMusic script in the XML file in my directory, however I can't find that ability anywhere, not in the Class Specials, not in the Custom Abilities, and not in the Specials tabs. I've been trying to make a copy of it, I just can't find it.

As for the kLiterBbn skill, why does the regular Barbarian copy work then, if this needs bootstrapping? All I did is copy the Barbarian and replace the ids, it should have been working all along. For that matter, why didn't the hBrdMusic recognize my replaced Bard helper id? Kinda wierd.

BTW, I have a custom ability that I need to use on all the classes, however I don't want that ability to show up in the Specials on the hero, is there a way I can make it undisplay, but still be active for the hero?

Lawful_g February 15th, 2011 03:34 PM

Ah, I see the problem. In the past there was a tab in the editor called "Charges", but it was taken out. The "hBrdMusic" thing is a Charge, and since it is no longer possible to copy or edit, or create charges, you should delete it from your class helper, and then make a new special to count the number of daily uses a bard gets.

Kendall-DM February 15th, 2011 04:20 PM

Bootstrapping the kLiterBbn did not solve the problem. Still not found.

On the other hand, got the Bard problem solved.

Lawful_g February 15th, 2011 04:32 PM

Try replacing cBbnIllit with a new one then, and go into the eval script, and change the script from...

Now I am looking at the eval script, I don't see where the problem is. Below is the script:

~ Available if we have only 1 class (i.e. the barbarian) - otherwise
~ the tag needs to be deleted
var result as number
if (hero.tagunique[Classes.?] - hero.tagis[Classes.Race] - hero.tagis[Classes.Template] > 1) then
result = delete[Helper.ShowSpec]
endif
if (#skillranks[kLiterBbn] >= 1) then
result = delete[Helper.ShowSpec]
endif

Normally I'd recommend changing "hero.child" to "hero.childfound" but there are none...


All times are GMT -8. The time now is 12:17 AM.

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