• 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

Hero Lab Editor is horrible and Tutorial*2 bad

I've been deciding whether or not to get into this discussion or not. I have been programming software extensively for over 20 years now in C/C++/Java/Assembly and multitudes of proprietary languages/interfaces, from client software, to server software, to writing interfaces and libraries, though, and I can state a couple of things:

Developing that 80% is actually a lot more complicated than people think. The reality is pretty much every character creation software that allows people to customize has to decide a key question: flexibility, or ease of use. the problem with ease of use, is they almost never cover what people want.

now documentation is another story entirely. yes, it can be found with questions and answers in the community, but at the same time, you can make a valid argument that documentation and videos could be significantly improved. The problem with the editor, in my opinion, isnt the editor, ive been able to figure out a lot of stuff on my own and with the community, it is the lack of easily searchable documentation. Some of the help pages are useful, but better documentation can and should (again, in my opinion) be written and published. Yes, you can learn by trying, and you can learn by asking, and thats all great, but there can be an argument made that in professional software, it shouldnt be required.
 
Just to chime in a bit here. The data files that I host on my website are out of date and I am going to drop them in favor of Shadow hosting them on his site. he is the on updating and maintianing them anyways. Instead I am going to move to a blog format instead and try to provide information about the HL tool. I have already done some of this with the series of demo videos and the upcoming monthly seminars that I am hosting.

So, for the blog, which I will speak more of a bit later, my hope is to provide a user community place for information. I know there is a HL wiki, but its not used hardly at all. For a lack of information, I have to cast the net over much of the user community for this. There are places for users to enter information, to share information, and to get information, but they arent used very much. I'd like to get on my high horse for a second here. Most people are looking for a simple solution to whatever problem they are having, whether to add information into the editor or create a Home container. Some of these problems aren't easy but many are if people would use the available information that already exists. This can be done with existing examples (finding somehting that does the same thing and modifying the information, the forums, videos, and user community files. All of these should be used and in fact they were all created so people could use them to solve the problems they were having.

If a problem is larger or more complicated than the available information can solve, there are going to be monthly seminars, the blog can be a repository of scripting examples. While there are those who are trying to help as much as possible, there is really just a handful of members of the user community doing this. I know my own skills do not contain and programming. For the bulk of my questions, I have modified that is already in HL. But I also know that I have taken Skype calls and emails from people all over the world to try and help them out on a one-on-one basis. Thus was the imputus for them monthly seminars.

So what I ask, and challenge, all members of the user community is to add to the body of information so that others who come after can learn from the work and efforts that we all have done. Don't leave everything to a handful of users and then expect more and more form them. The systems are getting larger and more complicated, so its getting harder to keep up on everything that is going on. So the need for more members of the user community to be involved is becoming greater.
 
Just to chime in a bit here. The data files that I host on my website are out of date and I am going to drop them in favor of Shadow hosting them on his site. he is the on updating and maintianing them anyways. Instead I am going to move to a blog format instead and try to provide information about the HL tool. I have already done some of this with the series of demo videos and the upcoming monthly seminars that I am hosting.

So, for the blog, which I will speak more of a bit later, my hope is to provide a user community place for information. I know there is a HL wiki, but its not used hardly at all. For a lack of information, I have to cast the net over much of the user community for this. There are places for users to enter information, to share information, and to get information, but they arent used very much. I'd like to get on my high horse for a second here. Most people are looking for a simple solution to whatever problem they are having, whether to add information into the editor or create a Home container. Some of these problems aren't easy but many are if people would use the available information that already exists. This can be done with existing examples (finding somehting that does the same thing and modifying the information, the forums, videos, and user community files. All of these should be used and in fact they were all created so people could use them to solve the problems they were having.

If a problem is larger or more complicated than the available information can solve, there are going to be monthly seminars, the blog can be a repository of scripting examples. While there are those who are trying to help as much as possible, there is really just a handful of members of the user community doing this. I know my own skills do not contain and programming. For the bulk of my questions, I have modified that is already in HL. But I also know that I have taken Skype calls and emails from people all over the world to try and help them out on a one-on-one basis. Thus was the imputus for them monthly seminars.

So what I ask, and challenge, all members of the user community is to add to the body of information so that others who come after can learn from the work and efforts that we all have done. Don't leave everything to a handful of users and then expect more and more form them. The systems are getting larger and more complicated, so its getting harder to keep up on everything that is going on. So the need for more members of the user community to be involved is becoming greater.

maybe you could do a weekly or so request on how to do different advanced functions (along with a 2 to 3 day long poll for other users to vote on what if that is something that a lot of people need/want to know how to do) with the editor so different advanced features could be covered.
 
It occurred to me, I'm not exactly sure what it is that people need to understand to understand how to use the editor.

Which of these are the real problem:
1) What are all these tabs called Feat, Trait, Template, etc. There are a huge array of them. I don't know what to do.

2) What do all these options when I'm making a Feat/Class/etc like Source, Show in Specials, etc? What options to I choose for them?

3) How do I do X action? Like make a situational modifier to AC when I'm standing on one toe I get +3 to AC?

For me, Question 1 wasn't a question. Most were obvious, the reset I just copied a few of them to see why they ticked.
Question 2 was learned by trial and error and example, so also a non issue.
Question 3 is HARD. I spent MOST of my time viewing data.hlz in binary mode and searching for various txt strings. This was annoying on windows because If I didn't close that out it would crash HL when it reloads the data ;-(

I have an idea that really Question 3 is where most people have trouble. No docs really cover this problem.

Maybe there could be a complied list of "to do X" then "look at Y from Z book"?
 
It occurred to me, I'm not exactly sure what it is that people need to understand to understand how to use the editor.

Which of these are the real problem:
1) What are all these tabs called Feat, Trait, Template, etc. There are a huge array of them. I don't know what to do.

2) What do all these options when I'm making a Feat/Class/etc like Source, Show in Specials, etc? What options to I choose for them?

3) How do I do X action? Like make a situational modifier to AC when I'm standing on one toe I get +3 to AC?

For me, Question 1 wasn't a question. Most were obvious, the reset I just copied a few of them to see why they ticked.
Question 2 was learned by trial and error and example, so also a non issue.
Question 3 is HARD. I spent MOST of my time viewing data.hlz in binary mode and searching for various txt strings. This was annoying on windows because If I didn't close that out it would crash HL when it reloads the data ;-(

I have an idea that really Question 3 is where most people have trouble. No docs really cover this problem.

Maybe there could be a complied list of "to do X" then "look at Y from Z book"?
Like this idea, above.

It's the Eval Scripts and such that make the various abilities affect the character correctly.

Setting up each item where it needs to have a per-requisite pretty much have a handle on except some of the weird stuff that comes up periodically.

A few other things that I can think of offhand and that is having the character be able to select from a list of items where there isn't a list already built, Item Selection using Custom Expressions.

Modifying existing classes, where the supplemental material changes the nature of the way the class is built, e.g. Inquisitors, Gunslingers, who have fixed judgments and deeds to having the ability to select which judgments or deeds they want and how the scripting has to change when moving from a class special to custom special ability, because a direct copy doesn't work.

Another is selecting a feat that grants you the ability to select spells from a list:

You may select 6 spells from the following
bonus spell list. The spells selected must be of levels you
can cast, and become part of your spell list. You may not
select more spells from a level than you have selected from
each level below it. (You may take this feat more than once
in order to eventually gain higher-level spells.

Sample spell list:
0 level – bleed, daze, resistance
1st level — enlarge person, hideous laughter, lesser
confusion, true strike
2nd level — aid, bull’s strength, shatter, touch of idiocy

Templates give me fits too.

Just some of my challenges that I am contending with at this point...
 
Risner, I think you are correct. Using the editor for basic stuff like adding a new spell is pretty easy and with the video help thats already out there, really anyone should be able to create one. The hard part is the scripting of things, which is many times unique to what the person is trying to do.

I thin as part of my Hero Lab blog that I'll start to gather examples of code and try to explain it as best as possible and just give a list of some more common stuff.
 
I thin as part of my Hero Lab blog that I'll start to gather examples of code and try to explain it as best as possible and just give a list of some more common stuff.

There is a list of HL macros on this post that has been built already. This could be a great starting point by providing examples of the code below the macros themselves. I have thought about doing that, but alas I have a lot of projects on my plate already and would not be able to do it for a while.

For example:

#situational - Used to add a bonus to an ability under certain circumstances
Code:
Final Phase/20000
~This will add a situational bonus to our stealth skill
    #situational[hero.child[skStealth],"+4 bonus when in trees.", field[name].text]

~This will add a situational bonus to our CMD
    #situational[hero.child[ManeuvDef],"can't be tripped",field[name].text]

#extradamage - Used to add additional damage to an existing weapon
Code:
Final Phase/20000
~This will add 1 Bleed damage to our bite attack
    #extradamage[hero.child[wBite]," plus bleed 1",field[name].text]

#attrbonus - Used to find the bonus for an ability attribute - Calculates our atrribute modifier with a minimum of 0
Code:
Final Phase/10000
~We can use this ability a number of times per day equal to our Wisdom bonus (minimum 1).
~First we need to calculate the number of times it can be used
    field[abValue].value = maximum(#attrbonus[aWIS],1)

~Now we can add that value to the ability this code is on
    field[trkMax].value = field[abValue].value

#attrbonus1 - Used to find the bonus for an ability attribute - Calculates our atrribute modifier with a minimum of 1 (Does same thing as code above)
Code:
Final Phase/10000
~We can use this ability a number of times per day equal to our Wisdom bonus (minimum 1).
~First we need to calculate the number of times it can be used
    field[abValue].value = #attrbonus1[aWIS]

~Now we can add that value to the ability this code is on
    field[trkMax].value = field[abValue].value
 
Last edited:
Another useful piece would be the codes for the different pieces where we need to check if they have been replaced or removed from the character before the script runs. For example:

All of these would be included at the top of each Eval Script
Timing is not included because it is determined by the script, not the validation

Feats
Code:
~If we're not shown, just get out now
    doneif (tagis[Helper.FtDisable] <> 1)

Racial Specials
Code:
~ If we have been replaced then get out now
    doneif (tagis[Helper.SpcDisable] <> 0)

Class Specials
Code:
~ If we're not shown, just get out now
    doneif (tagis[Helper.ShowSpec] <> 1)
~We only need a livename for the first copy
   doneif (tagis[Helper.FirstCopy] <> 1)
 
Last edited:
Look again at the code you posted for feats - you've repeated the class special specific shutdown for feats, not the feat-specific shutdown
 
Last edited:
SpcDisable means "we're disabled". SpcReplace shouldn't ever be present unless SpcDisable is also there, since it means "the reason we were disabled is that we're replaced", so you want to test for SpcDisable, not SpcReplace, because there are things that are disabled for reasons other than replacement.
 
Also, you've left out the FirstCopy test for class specials, and inserted a SpcReplace that's redundant for class specials.
 
Also, you've left out the FirstCopy test for class specials, and inserted a SpcReplace that's redundant for class specials.

First copy wouldn't need to be on each Class Special though. Guess I could add it just for a reference.
 
For class specials, the SpcDisable is redundant - If Helper.ShowSpec was assigned to a class special, that means that SpcDisable was not present. There's no reason to repeat a test that's already been performed.
 
FirstCopy is critical to any class special that appears at multiple levels, but redundant in any other class special.
 
Last edited:
#attrbonus1 is attrbonus with maximum(X,1) already built in.
#attrbonus is #attrmod with maximum(X,0) already built in.
 
Thanks guys. Lost my head when I was typing the feat one, and still not the best with the Class Specials. That helped me out.
 
Back
Top