Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Savage Worlds

Notices

Reply
 
Thread Tools Display Modes
lowlight
Junior Member
 
Join Date: May 2010
Posts: 5

Old August 9th, 2010, 04:32 AM
Perhaps I missed this in the authoring tutorial (if so, please feel free to point out where it is in the FAQ so that I can look it up), but how do I go about creating enemy wildcards and creatures with custom wound levels? As it is now with the current version of HeroLab, either I can only have a creature with one wound level or three (like player wildcards).

Is there some special syntax I should use in bootstrap options when creating a creature type in the authoring kit that will allow me to have a custom number of wounds, or is there something else completely different that I should do? Right now, all I can do if I want a creature with say, 2 wounds, is that I have to create a creature with the wildcard option enabled, and then manually add a wound while also stacking the creature's stats to compensate for the -1 modifier; it's pretty convoluted. Any help on this would be great.
lowlight is offline   #1 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old August 11th, 2010, 09:41 PM
Take a look at the "Actor" component within the file "actor.str". Around line 105, you'll find the "acMaxWound" field, which tracks the maximum number of wounds the character can sustain. During the Setup phase at priority 1000, the Calculate script initializes the value of the field. The field is not other used until the Final phase or later. So all you need to do is modify this field via script between those two timings.

The simplest way to handle this is to add a permanent adjustment. Copy the "Skill Points" adjustment and create your own "Maximum Wounds" adjustment. All you need to change in the script is the line that applies the adjustment. Replace the "#resmax[resSkill]..." line with the following:
Code:
herofield[acMaxWound] += field[adjUser].value
Unless I'm overlooking something here, the above ought to establish an adjustment that can be easily used on any character/monster/whatever to adjust the number of wounds.

Hope this helps!
rob is offline   #2 Reply With Quote
lowlight
Junior Member
 
Join Date: May 2010
Posts: 5

Old August 12th, 2010, 11:35 PM
Quote:
Originally Posted by rob View Post
Take a look at the "Actor" component within the file "actor.str". Around line 105, you'll find the "acMaxWound" field, which tracks the maximum number of wounds the character can sustain. During the Setup phase at priority 1000, the Calculate script initializes the value of the field. The field is not other used until the Final phase or later. So all you need to do is modify this field via script between those two timings.

The simplest way to handle this is to add a permanent adjustment. Copy the "Skill Points" adjustment and create your own "Maximum Wounds" adjustment. All you need to change in the script is the line that applies the adjustment. Replace the "#resmax[resSkill]..." line with the following:
Code:
herofield[acMaxWound] += field[adjUser].value
Unless I'm overlooking something here, the above ought to establish an adjustment that can be easily used on any character/monster/whatever to adjust the number of wounds.

Hope this helps!

Hmmm....Okay, I think I'm doing what you've suggested here, but perhaps I'm misunderstanding your instructions (they're not exactly step-by-step for slow folks such as myself). Here's what I've tried to do based on what you've posted:

First - After starting my SW Herolab session, I immediately run up the HL Editor (Tools -> Launch Editor...).

Second - Once it's started, I load up my custom .user file I've been using for adding new items to the system.

Third - This is where things get a little confusing for me, as I think I may have misunderstood your directions. Since you mentioned that I needed to make a "Permanent Adjustment" that made use of the Skill Points award, I assumed you meant I had to click on the "Reward" tab, select "New (Copy)" from the creation pane, and then select "+1 Skill Point (rewSkill)" as the template to use.

Fourth - Once this was selected, I then immediately replaced the "Eval Scripts" entry that loaded with this selection (#resmax[resSkill] += 1) with the exact syntax you recommended (herofield[acMaxWound] += field[adjUser].value). I should also note here that the "#resmax[resSkill] += 1" was sitting on line2 of the Eval Script form; there was a blank spot (one tab) to the immediate left of the text and one complete empty line on line1. So, I made sure to place the replacement text in the same exact starting spot. Additionally, the "Phase"(Setup), "Priority"(5000) and "Index"(1) fields were all left at the values that originally loaded with the "+1 Skill Points" Thing.

Fifth - Once all of this was done, I made sure the thing name and ID were set to something unique. I then made sure to set the "Points Redeemed" value field to 0, since I imagine doing it this way is what will allow me to select an arbitrary number of wounds.

Sixth - Lastly, I selected "Save" from the creation pane, and then selected the "Test Now" button. Once this was all done, I received the following error message:

"Hero Lab was forced to stop compilation after the following errors were detected:

Syntax error in 'eval' script for Thing 'rewMWound' (Eval Script '#1') on line 1
-> Invalid field syntax used"

I thought that maybe there was a syntax issue with the text you gave me, so I tried to match it up with the format of the replaced text by placing a sharp (#) in front of the code like so:

#herofield[acMaxWound] += field[adjUser].value

When this was done, I received a slightly different error:

"Hero Lab was forced to stop compilation after the following errors were detected:

Syntax error in 'eval' script for Thing 'rewMWound' (Eval Script '#1') on line 1
-> Unspecified error parsing script"

Moving the text around within the Eval Script box without the "#", thinking that maybe the parser was seeing the very first blank line as "line1" and not ignoring it, resulted in the same error I got the first time. So, unless I'm following your instructions incorrectly, I have no idea why this won't compile. Any further advice you could offer on this would be greatly appreciated.
lowlight is offline   #3 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old August 13th, 2010, 03:02 PM
First of all, apologies for making a big assumption about the Savage Worlds data files. For all other game systems, the Editor provides the ability to add an "adjustment" via an "Adjustment" tab. These adjustments can be selected and utilized on the Personal and In-Play tabs for Savage Worlds, but it appears there is no way to add them via the Editor. I took a look at the source files when I suggested the solution and assumed you could add adjustments via the Editor for Savage Worlds. Sorry about that. :-(

I also screwed up the syntax of the statement I posted for you. All I can do is plead exhaustion from GenCon. We got home late at night on the 10th, and the 11th was an exhausted slog to try and dig out of the huge backlog from while we were gone. Next time, I should probably wait to reply to posts requiring real thought until I've been home for a day or two. That way, I won't make bone-headed mistakes like this.

So let's look at how to solve this properly with what's currently available today for the Savage Worlds files....

Until we get the Adjustments tab added to the Editor for Savage Worlds, the easiest way to integrate the logic you want is via an Injury. I realize that's counter-intuitive, but injuries don't have any other default logic associated with them. Rewards have logic tied to them that will likely cause issues if you use them for this purpose. Injuries are free of all that "baggage".

The drawback of using injuries instead of adjustments is that you can't assign a variable number of extra wounds via a single injury. So you'll need to create an injury for "+1 wound" and then assign it to a creature multiple times if you want to give it multiple extra wounds. Fortunately, that's easy to do.

Go into the Editor and click on the Injury tab. Since injuries are quite simple in nature and our "injury" won't behave like any others, click on the "New (Blank)" button. Give the injury a name like "+1 Wound" and assign it a unique id like "injwound1". Save the injury and test it. It won't do anything but show up at this point, which is all we want to verify.

All that's left is to assign the proper logic to our injury. Click on the Eval Scripts button, then click the option to add another script. We'll first setup the timing of our script based on what I outlined earlier. So we'll assign it a phase of "Setup" and a priority of 10000 (which is after Setup/8000). After that, we need to enter the actual script itself. This amounts to a single line, which should look like the code below.
[code]herofield[acMaxWound].value += 1[/quote]

The error I made in my earlier post was omitting the ".value" on the left of the "+=". We use a "1" for the injury script since we don't have a variable selector on injuries (which we do have on adjustments).

Save the above change, re-save, and re-test. This time, adding the "+1 Wound" injury will give the character/creature an extra wound. You'll see this tracked correctly on the In-Play tab if you assign wounds to the character/creature.

It's quite possible that this adjustment could also be handled as a Reward, using the approach you began with. My concern with rewards is simply that there may be some additional automatic logic associated with rewards that could mess things up. If not, then rewards will work fine. The script for the reward will need to be the same as I've outlined above for the injury.

In addition to the missing Adjustments from the Editor, this exercise has uncovered a few other issues with the Savage Worlds data files that need to be fixed. Stablock output needs to be modified to show both the total wounds for a creature and any injuries. In addition, sheet output needs to be modified to show the adjusted number of wounds in the tracking region. I've logged all of these as bugs to be fixed.

Hope this all makes sense this time!
rob is offline   #4 Reply With Quote
lowlight
Junior Member
 
Join Date: May 2010
Posts: 5

Old August 14th, 2010, 01:59 AM
No worries, one of your staff had contacted me earlier in the week concerning the convention, so I completely understand. I'm happy to say that your instructions this time around did exactly what I was looking to do; thank you so much! In fact, I went ahead and made a subtraction modifier based on the code you supplied I called "Subtract A Wound Level":

Code:
herofield[acMaxWound].value -= 1
I made this because, while I could simply make creatures and add a wound level to them with the wound modifier we just made, there are times that my campaigns/stories require me to remove a wound level from currently active wildcards. For example, I'm running a modified version of the Savage Tales campaign called "Zombie Run" in which I've altered the rules so that infection doesn't necessarily mean instant death/zombification, but instead a slow progression to death/zombification which slowly lowers a player's wound level should they still find themselves getting into combat (more akin to what happens with the Roger DeMarco character from the classic Dawn of the Dead movie).

Until now, I've been using the notes/journal section to keep track of this, but this new "subtract" modifier is much better! Thanks again for all of your help on this.

Last edited by lowlight; August 14th, 2010 at 02:01 AM.
lowlight is offline   #5 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 11:23 AM.


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