• 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 getting Item Powers to show in Special tab?

draco963

Well-known member
OK, I'm starting to tear my hair out here...

I'm trying to add a special ability to a weapon (Bull's Charge, +4 to Str check on bull rush, push target add'l 5' on success). Now, I built the Item Power just fine, and I can add it to the weapon, and the little "?" bubble on the weapon displays the text I entered for the ability. All good.

Not quite. Having it on the "?" is less useful than having the effect show up on the Special tab, as that's a central place that all non-mathematical effects get listed, and it should then even show up on the printed character sheet (which is what we predominantly use anyhow).

I've tried everything I can think of, being:
- Build a "Special" entry for the ability, and bootstrap that into a "Item Power" entry;
- Add the "Helper" tag and "ShowSpec" TagID to both the Special entry and the Item Power entry;
- Add the Helper tag with the SpSourceEq TagID to both entries;
- tried every mix-and-match combination of the two on both entries;
- Built a Feat instead of a special, and tried bootstrapping that onto the Item Power instead.

Nothing works. Well, except the Feat. It works fine: shows up in the Feat list, is selectable, provides the necessary text in the Special tab. Except, I need this to not show up on the Feats list, only the Special, and, bootstrapping the Feat onto the IP did nothing when that IP was added to my weapon...

Can anyone point out what I'm overlooking here? I'm going nuts...
Thanks all.
 
First, don't tear your hair our. You'll regret that when you discover there's nothing left to pull out.

Second, you should know that bootstrapping something to an Item Power doesn't work. When you do this, the bootstrapped item is applied to the weapon or armor the item power is attached to instead of the hero. As you've discovered, this does not then show up on the character. So, basically, the method you are using will never work no matter what you do.

In theory, you might be able to bootstrap it to the weapon with a conditional, but that would probably mean modifying nearly every weapon which isn't practical. Instead, what you could do is use a condition to bootstrap the special instead. Here's what I mean:

1) Find a condition, such as Blindness, and create a new version of it that replaces the old one (use Replaces Thing Id).

2) Create the special you want to have appear in the Specials tab, and bootstrap it to the new condition.

3) Create the item power, and with it create a new User Tag, one that would be unique. The item power would then have an eval script to assign that user tag to the hero.

4) Go back to the new condition and open the bootstrap thing. Add that User tag as a bootstrap conditional.

5) The hardest step is making sure the timing all works:

First thing is assigning the User Tag.
Second thing is the bootstrap condition looking for the tag.
Third thing is any scripts running on the special.

Full disclosure. I haven't actually attempted to do this before, but I have seen and done similar things. So, in theory it should work, but I guarantee nothing. If any steps above are confusing to you, let me know and I will try to clarify how to do them.
 
Sendric, thank-you SOOOO much for your reply. I'm pretty sure I understand what you wrote, but I'm not at my computer right now to try it out. I'll hopefully have a chance this afternoon. If this works, I'll be using it A LOT, as my campaign is written around the weapon of legacy concept.
Thanks again!
 
OK, so I didn't understand as well as I'd hoped. Here's what I did, in trying to follow your suggestions:

- In the Editor, went to General -> Adjustment, clicked New (Copy), chose Blinded.
- Re-wrote the Name (WoL - Bull's Charge), ThingID (pWoLBlChrg), and Text to match my desired goal. Left all the buttons and fields under the text box alone, except for Sources, which I indicated should be my mod.
- While still in the new adjustment, clicked the Bootstrap button, and entered into the Choose field the ID for the Special I created last night. Also deleted the old Eval Scripts.
- Went to Equipment -> Item Power, and clicked Edit on the User Tags line.
- Clicked -New Tag- and OK in the dialogue box. Entered in my new tag info (a unique ID, a Name; I didn't bother with an Abbreviation)
- Returned to General -> Adjustment, chose my new adjustment (the copy of Blinded), clicked Bootstraps, then the Tags button of the bootstrap for my Special, and then typed into the TagID field the user tag I created on the Item Power.

When I run Test Now!, I get the following error:
File: MyMod.user (line 196) - Thing 'pWoLBlChrg' - Invalid unique ID " for attribute 'group'

What'd I screw up?
 
Absolutely! Thank-you Sendric!

Here's a list of the relevant changes. I've barely started, so there's thankfully not much to sift through.

-General
-- Adjustment
- - - pWoLBlChrg - Bull's Charge "condition"
-- Special
- - - xWoLBlChrg - Bull's Charge "special"
-Equipment
-- Item Power
- - - ipWoLWBlCg - Bull's Charge "item power", for adding to weapons

View attachment MyMod.user
 
Just looking at it now. It looks like in the bootstrap window you added a tag with no group. That's why the error showed up.

Also, what you did isn't quite what I suggested. I'll make some changes an re-post the file.

Update: Ok, it works fine now.

If I remember correctly, the Weapons of Legacy were specific weapons. If you are creating those weapons I think it would be easier to make them in the Magic Weapon tab, assuming you can bootstrap things to weapons though I'm not actually sure about that.

Anyway, the file is attached. Let me know if you have any questions about what I did.
 

Attachments

Last edited:
Thanks so much Sendric. I'll look at the file in a bit (typing from the work computer now).

The actual WoL were specific items, yes, but, I've found that a lot of the effects that the WoL had are not already in the Item Powers list (or, they are there, but for weapons instead of armour, or vice-versa). So, I have a lot of work to do anyhow, to get all the effects I'll wind up using available to me. I'm also creating a few custom weapons of legacy, so they'll have combinations not seen in the source book regardless.

Thanks again for looking at the file. Hopefully I can wrap my brain around what you did.

While I've got you, I'm having trouble finding a good resource for learning the scripting language. Could you recommend one?

Thanks again Sendric!
 
OK, so, I definitely don't understand what's going on here...

First, why use Blinded as the General->Adjustment? why not create a new thing based on the concept of what's being worked towards? (i.e: a Bull's Charge Adjustment thing.)

Second, I think I understand why the Bull's Charge Special gets bootstrapped onto the Adjustment (to make HL recognise it as a Special), but where did the User.WoLBlChrg tag that's being used in the bootstrap conditional get defined? And, what purpose does it serve there?

Thirdly, the Bull's Charge special is showing up in the list regardless of whether the weapon it's attached to is equipped or not (it should only show if the weapon is equipped). It does go away if I remove the power from the weapon entirely. I think I know what's wrong: the Eval script in the Bull's Charge Item Power specifies hero.assign, and I think it should instead specify equip in some way (but I don't know enough of the scripting language to be sure). I have equip scripts on my Str+2 Item Power, but I don't know how to merge those, which cause an enhancement bonus, with hero.assign...

Thanks again Sendric! Sorry for being such a noob....
 
No problem.

Add the following line to the top of the eval script on the item power:

Code:
doneif (container.parent.field[gIsEquip].value = 0)

This will prevent the special from appearing if the weapon isn't equipped.

As for your other questions:

1) Why Blinded? No specific reason. It could be any condition. The point is to use something that is always going to be on the character no matter what. Whether or not it has anything to do with the ability is immaterial. Basically, its just acting as a carrier for the specials you want to add. The reason I wouldn't create a new one is because when you do that it makes a new condition in your adjust tab and it will fill up quickly if you do that.

2) The User.WoLBlChrg tag is defined by the item power and assigned to the hero when you want the special to appear. The reason it's assigned to the hero is because bootstrap conditionals are limited in what they can look for. Typically, they are looking for things on the hero.

Attached is an image of the conditional tag expression I used. The special is effectively always going to be on the hero, but will only appear if that tag is also present on the hero.

For more information on bootstrap conditions and other useful tidbits, I recommend checking out Mathias' post here:

http://forums.wolflair.com/showthread.php?t=21688

Technically, that's geared towards Pathfinder but it applies to d20 as well with a few exceptions.

I realize it might be confusing that I am referring to two different things as conditions here. The first condition is what you see on the adjust tab of your portfolio (ie Blindness, Entangled, etc). The other is a requirement placed on the bootstrap to prevent the special from appearing when you don't want it to.
 

Attachments

  • bootstrap.png
    bootstrap.png
    382.4 KB · Views: 6
Thanks for the code line Sendric! Sorry I took a week to answer back; I finally got a vacation, and took time off even from my projects like this one.

So, Blinded is actually always attached (per se) to the hero, it's just a question of whether it's turned on or not. And I can use Blinded (or any other condition) to piggyback other things onto the hero. Then, we used bootstrapping to attach my thing to an item power (and thence to an item), and an evaluation code to set the un/equipping of that item as an off/on switch for my thing, which in this case was a Special.

Did I get that right?

I definitely don't understand user tags, what they're for or how they're used. I also don't understand why a bootstrap has Fields, Tags, and Conditions sections, or what those are used for (nor how to do so).

I did try reading Mathias' posts. Unfortunately, I'm having trouble making heads or tails of it. The drawback of a kinaesthetic learning method: I've got to actually do it most of the time, so sandboxing is really effective for me, but reading about doesn't always help so much... Which makes me all the more grateful for your help so far.

I think of the two "conditions" referred to in our posts as Conditions (Blinded, Entangled, etc), and conditionals (if/and/or expressions). No worries on that. The logic I can wrap my head around (once I'm lead by the hand a bit); it's learning the terrain and the language that I suck at.
 
Thanks for the code line Sendric! Sorry I took a week to answer back; I finally got a vacation, and took time off even from my projects like this one.

So, Blinded is actually always attached (per se) to the hero, it's just a question of whether it's turned on or not. And I can use Blinded (or any other condition) to piggyback other things onto the hero. Then, we used bootstrapping to attach my thing to an item power (and thence to an item), and an evaluation code to set the un/equipping of that item as an off/on switch for my thing, which in this case was a Special.

Did I get that right?

Yes, that's basically the gist of it.

I definitely don't understand user tags, what they're for or how they're used. I also don't understand why a bootstrap has Fields, Tags, and Conditions sections, or what those are used for (nor how to do so).

User tags are like any other tags, except Users get to create them. So instead of assigning "Helper.Proficient" which you might assign to a weapon to inform HL that the character is proficient with that weapon, you can create your own tag and assign that. Tags come with two parts:

Group ID (ie "Helper")
Tag ID (ie "Proficient")

User tags are always from the User group, so they will always be "User." whatever. The Tag ID is whatever you want it to be.

Bootstrap buttons:

Fields: Use this to assign values to any field that is found on the thing being bootstrapped. For example, if I was bootstrapping a the natural weapon "Tail Slap" but wanted to change it so that it said "Tail" I could open this window and put "livename" as the Field ID and "Tail" as the Value. You can also provide a number for fields like hTotal, or Value or any other field you might want to use.

Tags: Similar to the Fields button, you can assign Tags to your weapons. Using the Natural Weapon example from above, when you assign a Natural Weapon, it assumes it's a Secondary attack. You can use this button to assign the tag "Helper.NatPrimary" to make it a Primary attack.

Conditions: This is a script that says "If this is true, add this bootstrap to the character." The one I used for your special was shorthand. Instead of writing out the entire evaluation, I simply put the tag (User.xxx). Other examples of things that can go here are:

User.Tag<>0 - this is the same as just putting User.Tag, and means "if the tag exists on the hero"

User.Tag=0 - "If the tag does not exist on the hero"

fieldval:Value=1 - "If the value of our special equals 1, assign this"

Note that when checking for tags, it's usually looking at the hero tags. When checking values, it only checks the values of the thing that is doing the bootstrapping, not the thing being bootstrapped.

I did try reading Mathias' posts. Unfortunately, I'm having trouble making heads or tails of it. The drawback of a kinaesthetic learning method: I've got to actually do it most of the time, so sandboxing is really effective for me, but reading about doesn't always help so much... Which makes me all the more grateful for your help so far.

You kids and your fancy terms these days. Back in my day, we just called this "Learn-by-doing", which is also how I learn. I use Mathias' posts as a reference more than anything else. As for learning the code, I learn by doing it, and looking at other scripts that do the same sort of thing I'm trying to do.

I think of the two "conditions" referred to in our posts as Conditions (Blinded, Entangled, etc), and conditionals (if/and/or expressions). No worries on that. The logic I can wrap my head around (once I'm lead by the hand a bit); it's learning the terrain and the language that I suck at.

Hopefully this all helps a bit more to understand what I did, and what you can do.
 
Ya, umm... I'm thirty-five... :rolleyes:

OK, so I got the idea of what we were doing messing about with the an existing condition correct, good.

So, I think my difficulty with tags is more basic. What are they for? Why are they there?

Thank-you so much for your breakdown of Fields/Tags/Conditions. I think I'm wrapping my head around it now.

Or maybe not, as I tried to implement it, and it didn't work at all...

Here's my next goal: Lots of WoL have spells attached to them. Given how HL works, my idea is to have those spells show up on the In Play tab. So, I made a Wand with the spell effect I need (it's just text, so that's easy), made an Item Power designed with that same effect in mind, and bootstrapped the Wand onto the IP. Now, I thought that if I defined the hTotal tag in the bootstrap, that would tell the Item Power to assign the Wand with one use, and I set the condition to be the User tag for the Wand (hoping that would tell the IP to "activate" the Wand when the IP was equipped).

No surprise, it didn't work. I've tried messing around a bit more, and I'm running in circles again. Can you tell me what I misunderstood? Did I at least get the concept right, even if I screwed up the execution? And, how can I better diagnose these mistakes without bothering you?

Thanks Sendric!
 
So, I think my difficulty with tags is more basic. What are they for? Why are they there?

Information. There are a number of internal scripts that will trigger if a tag is present on the character or a thing. For example, a weapon with the tag "wCategory.Melee" tells HL that it is melee weapon, and we don't need the range to hit bonus.

Here's my next goal: Lots of WoL have spells attached to them. Given how HL works, my idea is to have those spells show up on the In Play tab. So, I made a Wand with the spell effect I need (it's just text, so that's easy), made an Item Power designed with that same effect in mind, and bootstrapped the Wand onto the IP. Now, I thought that if I defined the hTotal tag in the bootstrap, that would tell the Item Power to assign the Wand with one use, and I set the condition to be the User tag for the Wand (hoping that would tell the IP to "activate" the Wand when the IP was equipped).

No surprise, it didn't work. I've tried messing around a bit more, and I'm running in circles again. Can you tell me what I misunderstood? Did I at least get the concept right, even if I screwed up the execution? And, how can I better diagnose these mistakes without bothering you?

Well, this isn't really a diagnosis problem. You bootstrapped your special to the Item Power. It will never show up on your character that way. That's why I placed the bootstrap for the other special we did on "Blinded". All the Item Power can do is run a script to assign a tag to the hero. The Blinded condition is what we use to bootstrap, based on conditionals such as whether a tag is present or not.

The technique I showed you is really more of an advanced method of doing things, and to be honest is really just cheating the system so to speak. I can't say I would recommend tackling Weapons of Legacy to people just trying to learn the editor, so it's not really too surprising that you're struggling a bit. Don't worry about bothering me. It's nice to take a break from entering new creatures and spells and what have you.

By the way, whenever we get the next d20 system release, it should come with a new feature that will make using Spell-like Abilities much easier. In the meantime, the method I would use is to create a special with the name of the spell, and whatever text you want. You will need to make sure it has the "Helper.ShowCharge" tag applied as well as a value in the hTotal field to make sure it appears in the In-Play tab. Once we have the change, you'll be able to bootstrap spells directory with a special tag and it will appear in your Spells tab instead.
 
Ok, I think I have a better understanding of tags now. I also think it's going to be a matter of simply playing either them quite a bit more.

So, anything I want to have show up in the Specials or In-Play tabs needs to be written up as a special, and then bootstrapped to Blinded, so that it gets hooked on to the hero. Then I use the item power to reference the tag for the special, and an Eval script like we used for Bull's Charge to verify the Item Power is equipped. And no matter what I'm making, I use the same method. Pretty well right?

Jumping into the deep end without learning to swim first is pretty much par for the course for me. I always grandiose ideas, and I don't start small. :D Thanks for putting up with it, and I'll always be glad to distract you from the tedium of monsters and spells and whatnot (though, I have to say, thank-you so much for tackling THAT enormous task. Having everything already in Hero Lab has been absolutely phenomenal).

An easier way to use spell-like abilities would be marvy, but I'm happy to wait. This is going well so far.

Of course, wrapping my head around this means I'm starting the next phase of my project: changing all the Websterisms to their Oxford spellings. Any ideas where to start there (without doing a "replace thing" for every single instance of armor, favor, etc.)?
 
So, anything I want to have show up in the Specials or In-Play tabs needs to be written up as a special, and then bootstrapped to Blinded, so that it gets hooked on to the hero. Then I use the item power to reference the tag for the special, and an Eval script like we used for Bull's Charge to verify the Item Power is equipped. And no matter what I'm making, I use the same method. Pretty well right?

Kind of. First, let me say it's important to remember that what we're doing we are only doing because you can't bootstrap things to item powers. For basically anything else, you'd do it the normal way.

Anywho,

1) Create Item power, including unique User tag, use eval script to assign the tag to the hero.
2) Create special, bootstrap to Blinded with conditional tag (User.?)

That's pretty much it.

Jumping into the deep end without learning to swim first is pretty much par for the course for me. I always grandiose ideas, and I don't start small. :D Thanks for putting up with it, and I'll always be glad to distract you from the tedium of monsters and spells and whatnot (though, I have to say, thank-you so much for tackling THAT enormous task. Having everything already in Hero Lab has been absolutely phenomenal).

You're welcome. Don't worry, though. If I didn't enjoy it on some level, I wouldn't be doing it. As long as I keep mixing it up, it's pretty fun.

Of course, wrapping my head around this means I'm starting the next phase of my project: changing all the Websterisms to their Oxford spellings. Any ideas where to start there (without doing a "replace thing" for every single instance of armor, favor, etc.)?

I have no idea what you're talking about here. Are you saying you want to rename things to have a different spelling? I can't think of a way to do this that wouldn't be a ton of work. You could either do a replace thingid for everything you want to change, or come up with a list of words you want to change and then use a text editor to do seek and replace. The first method would be one and done. The second you'd have to do each time you got a new release. Both seem like a lot work for little return unless you can seek and replace text in multiple files at once. If you can, then I would recommend that.

Edit: If you have Windows, you could download Windows Grep, and use that to replace text in multiple files.
 
Last edited:
Thanks Sendric.

Followed your steps (nice and straightforward, BTW, thank-you for that). Any idea why sometimes when I build something and test it the editor tells me that it's compiled, and other times it throws an error saying "thing is in use, all instances must be deleted and re-added"? The later appears to force a reboot of the software, and I'm wondering if it's me, because most stuff just says, "Thing in use, item will be deleted and re-added to your hero," but Specials seem to always require a hard reboot of the software... Just curious, I guess.

The special works now (yay!), but with one nigh-insignificant bug: When I unequip the weapon with the item power on it, the In Play tab does not immediately remove the spell from play. It will do if I equip something else, but it appears that the software is treating equipping a separate item as a requirement (which it oughtn't, I don't think). So, any ideas for a work-around fix?

Sorry for being obtuse about the spelling bit (and yes, it will be a mind-numbingly large task). I grew up with favour, colour, armour, etc, and seeing favor, color, armor, etc, throws me. I know, it's silly and OCD, but it does nevertheless. So, I tried a find-&-replace on the srd_feats.dat file (since they're just XML files with different extensions, they open up just fine with Notepad++), but the game doesn't recognise the change. I know that editing the base files is not the best solution, as updates might change them, but that's my exact concern with doing a whole bunch of replace things: if they get updated or changed, then I won't even know they've been changed, because my ReplaceID will have over-written it... Any ideas, or am I simply screwed?

Thanks again!
 
So, I tried a find-&-replace on the srd_feats.dat file (since they're just XML files with different extensions, they open up just fine with Notepad++), but the game doesn't recognise the change. I know that editing the base files is not the best solution, as updates might change them, but that's my exact concern with doing a whole bunch of replace things: if they get updated or changed, then I won't even know they've been changed, because my ReplaceID will have over-written it... Any ideas, or am I simply screwed?
The .dat files included with d20 are a "copy" of the skeleton files but they are not actually them. So yeah changes to those files do nothing. The only way to change "core" feats (ie feats that come with d20) is a replace Thing ID.

I have not kept up really well on this thread. But it sounds like you just want to change the "names" and "text" of stuff? This can be done without using Replace Thing ID. Its bit of an advanced use of scripts but you can change the name of a Thing or a Things "text" description. I say thing with the idea that a Thing is different from a Pick. Currently you have been working with Picks which are Things that are "live" on the hero.

In this case we will be working with Things that are still in HL data base in the background. So the following is example code from Pathfinder but the script concept is 99% what you need. In this case the we are changing the Heal skill to be called "Medical" instead:
Code:
perform state.thing[skHeal].amendthing[name,"Medical"]
If we wanted to overwrite the Heal skills text description we do this:
Code:
perform state.thing[skHeal].amendthing[description,"Medical is a new skill!"]

If you put in a hundreads of these to overwrite every feat/spell/gear item I don't know how well it will handle that. I have only used this concept in small batches to change things for 3PP books in Pathfinder.
 
Cool!!! Thanks ShadowChemosh! There're actually not a lot of Websterisms that I've noticed so far. Mostly it's just seeing "Armor" everywhere. But, I think I'd still need to write out an amendthing command for each skill/feat/spell/etc that has that word, right? Ya, it's starting to seem like I'll just have to suck it up...

Yet another new thing: a new Weapon of Legacy negative effect that I'm trying to implement is a reduction of spell slots. I haven't so far found anyone that's done that already, and the tutorial html's didn't seem to mention it. I couldn't find any items that increased it either, except as an In-Play listing. I found the field cCastTot in the srd_class_wizard.dat, but as that's an array, I'm not sure how to implement that in a script to reference only the count of a particular spell level, nor am I sure which hero.child it would be under...

Thanks guys!
 
The special works now (yay!), but with one nigh-insignificant bug: When I unequip the weapon with the item power on it, the In Play tab does not immediately remove the spell from play. It will do if I equip something else, but it appears that the software is treating equipping a separate item as a requirement (which it oughtn't, I don't think). So, any ideas for a work-around fix?

You need to modify the script on the item power to only assign the User tag you created when the item is equipped. That's what this line of code I had you add earlier does:

Code:
doneif (container.parent.field[gIsEquip].value = 0)

doneif is basically "if this expression is true, we're done"

container.parent is the parent of the thing the script is on. When placed on the item power, it's parent is the weapon it's put on. So, this script looks at the weapon and checks to see if it is equipped. If it isn't, it doesn't do anything else. If it is, it continues with the rest of the script, which in this case is adding the User tag.
 
Last edited:
Back
Top