Lone Wolf Development Forums  

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

Notices

Reply
 
Thread Tools Display Modes
draco963
Member
 
Join Date: Jul 2015
Location: Ottawa
Posts: 58

Old August 4th, 2015, 08:32 PM
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.
draco963 is offline   #11 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old August 5th, 2015, 05:44 AM
Quote:
Originally Posted by draco963 View Post
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.

Quote:
Originally Posted by draco963 View Post
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.

Quote:
Originally Posted by draco963 View Post
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.

Quote:
Originally Posted by draco963 View Post
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.
Sendric is offline   #12 Reply With Quote
draco963
Member
 
Join Date: Jul 2015
Location: Ottawa
Posts: 58

Old August 5th, 2015, 07:53 PM
Ya, umm... I'm thirty-five...

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!
draco963 is offline   #13 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old August 6th, 2015, 09:36 AM
Quote:
Originally Posted by draco963 View Post
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.

Quote:
Originally Posted by draco963 View Post
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.
Sendric is offline   #14 Reply With Quote
draco963
Member
 
Join Date: Jul 2015
Location: Ottawa
Posts: 58

Old August 6th, 2015, 07:32 PM
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. 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.)?
draco963 is offline   #15 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old August 7th, 2015, 04:55 AM
Quote:
Originally Posted by draco963 View Post
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.

Quote:
Originally Posted by draco963 View Post
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. 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.

Quote:
Originally Posted by draco963 View Post
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 by Sendric; August 7th, 2015 at 04:57 AM.
Sendric is offline   #16 Reply With Quote
draco963
Member
 
Join Date: Jul 2015
Location: Ottawa
Posts: 58

Old August 8th, 2015, 03:29 AM
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!
draco963 is offline   #17 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old August 8th, 2015, 10:52 AM
Quote:
Originally Posted by draco963 View Post
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.

Hero Lab Resources:
Pathfinder - d20pfsrd and Pathfinder Pack Setup
3.5 D&D (d20) - Community Server Setup
5E D&D - Community Server Setup
Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources.
Created by the community for the community
- Realm Works kickstarter backer (Alpha Wolf) and Beta tester.
- d20 HL package volunteer editor.
ShadowChemosh is offline   #18 Reply With Quote
draco963
Member
 
Join Date: Jul 2015
Location: Ottawa
Posts: 58

Old August 8th, 2015, 11:19 AM
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!
draco963 is offline   #19 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old August 8th, 2015, 05:04 PM
Quote:
Originally Posted by draco963 View Post
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 by Sendric; August 8th, 2015 at 05:10 PM.
Sendric is offline   #20 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 04:44 PM.


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