Lone Wolf Development Forums  

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

Notices

Reply
 
Thread Tools Display Modes
Gumbytie
Senior Member
 
Join Date: Jun 2010
Location: Florida
Posts: 235

Old July 17th, 2012, 04:54 PM
Okay, I have mainly worked on Pathfinder and recently jumped to Savage Worlds (since I am running it).

Don't like dependency on Agility all the time and created an Edge that swaps out Fighting > Agility to Fighting > Strength. The thinking that some characters are more of a thuggish/brutish fighter. That is all fine on paper

I am stuck trying to actually make it so within the program. I am guessing this is some sort of Eval Rule or Eval Script, which would be my weakest area. Or is it Bootstraps?

I will continue to dig through Forums and Documentations in hopes I see something similar I can try. Any help would be appreciated.

The basic stuff I get. I have created most everything I need for Ragnarok, for example. Going to tackle Gaslight next.
Gumbytie is offline   #1 Reply With Quote
CapedCrusader
Senior Member
Volunteer Data File Contributor
 
Join Date: Aug 2009
Posts: 1,549

Old July 17th, 2012, 10:59 PM
It's actually a linkage between the Skill (Fighting) and the Attribute (Agility). I've got a couple of ideas, let me try some things and get back to you.
CapedCrusader is offline   #2 Reply With Quote
Gumbytie
Senior Member
 
Join Date: Jun 2010
Location: Florida
Posts: 235

Old July 30th, 2012, 03:03 PM
I am curious to see what CapedCrusader might come up with

My attempts so far have continued to fail in one way or another.

Making the actual Edges, not a problem. That still works fine. So I got the bright idea that I would just make new versions of the Fighting skill for players to pick. Meaning they would now see:

Fighting (Agility)
Fighting (Strength)
Fighting (Smarts)

And that solves one part of the problem and creating a cascading failure on down the line The player now has the appropriate skill to reflect the Edge, but what I forgot was Derived Attributes (parry) and melee weapons. So if the player takes one of the new skill options, his Parry and no melee weapons calculate properly because they no longer see a 'skFighting'.

Obviously my new versions couldn't have same name so things sort of broke down.

I am still banging away on it but no luck yet. Obviously the best solution is something that redirects Fighting (skFighting) > Agility to Fighting (skFighting) > Smarts or Strength. So it needs to keep the UniqueID of 'skFighting' and somehow swaps out linked attribute depending on which Edge taken.

That is my update for now.
Gumbytie is offline   #3 Reply With Quote
Gumbytie
Senior Member
 
Join Date: Jun 2010
Location: Florida
Posts: 235

Old July 30th, 2012, 08:22 PM
Getting closer, yeesh.

So I noticed on the tab where I made the new skill Fighting linked to (Strength), there is a box: Replaces Thing ID. So in that box I typed skFighting. Lo and behold, that actually works. If a player selects this version of Fighting, it replaces the original correctly and does all calculations correctly.

Now the downside, I also have a skill Fighting linked to (Smarts). If I try and do the same thing I get an error. Apparently only one skill can 'replace' another using this mechanism.

But heck, I got one working
Gumbytie is offline   #4 Reply With Quote
Gumbytie
Senior Member
 
Join Date: Jun 2010
Location: Florida
Posts: 235

Old July 31st, 2012, 01:03 PM
Hmm, so this partial 'solution' I discovered maybe not such a good idea.

So if I use that Replace Thing ID, it seems to override the original Fighting (Smarts) skill across all the Savage Worlds settings. That shouldn't be, in my mind anyways, but that is what is happening.

So even if I am not loading that source (via the checkboxes in Character > Config Hero), it is still applied. So if I load Solomon Kane or Deadlands, or just use the core book even (not loading my custom data set), this problem occurs: the Fighting (Agility) just disappears. There is no skill to select.

If I load in my custom dataset, then Fighting (Agility) is still gone but my custom option override, Fighting (Strength), appears. That just seems wrong to me. Why would the custom settings affect others when it isn't selected?

Okay, back to the drawing board.

Now I am really hoping the CapedCrusader comes to my rescue...heh, how often do you get to type that?
Gumbytie is offline   #5 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old July 31st, 2012, 02:55 PM
Sorry, but Commissioner Gordon will have to suffice here.

The purpose of "Replace Thing ID" is exactly how it's named. It's a fundamental replacement of the thing within the core data files, and it allows users to change the behavior of core functionality.

This is intentionally a global change and not dependent on a particular setting. Any setting control to try to exert over replacement is simply going to be ignored.

Wiring in a change that transparently and automatically causes all cascading dependencies to inherit all the new behaviors of that change *must* be done at a fundamental level. It's not something that can be done casually and "on-the-fly", such as works for most changes that people want to make.

What you want is a change that properly cascades its effects into Parry, weapons, etc. The only way to accomplish that easily is via the "Replace Thing ID". The alternative is to replace everything that depends on your new Fighting skills so that all those dependencies know to base their effects on the new skills instead of the standard one. That's a lot of work.

If you want to do something fundamental like change the way Fighting works, you'll need to use the "Replace Thing ID" approach. To ensure that this only applies to the setting you want, you can create an alternate instance of the Savage Worlds data files that are used solely for that setting. You can accomplish this by going to the Tools menu and duplicating the game system. You'll then have two separate versions of Savage Worlds shown on the initial Select Game System form that appears when you launch, one with all the standard Savage Worlds stuff and another specifically for your setting. By making your change to the Fighting skill in the alternate instance, it won't apply to the standard Savage Worlds files or any of the settings there.

Now for where things get more complicated for implementing your idea via the method you're currently taking. The problem is that you want essentially three different Fighting skills. But there is only one core Fighting skill to replace, and all you can't replace one skill three different ways. So the proper solution is to have one replacement Fighting skill that keys on which edge is selected to determine how it behaves. This requires that you change the linkage via an Eval script on the Fighting skill through the use of "setlinkage".

However, there's an easier way to solve this that does *not* require all the special hoop jumping above. Instead, just change the linkage of the Fighting skill via an Eval script on the various edges you've defined above. Then you don't need to use "Replace Thing ID", which means you don't need to carve out a separate instance of the game system, and you can tie your changes easily to a custom setting/source.

Within an Eval script for the edge that ties Fighting to Strength, add the following line of code:
Code:
hero.childfound[skFighting].setlinkage[attribute,Attribute,"thingid.attrStr"]
The timing of the script will need to be relatively early, ensuring that it occurs before the linkage is utilized by anything.

Hope this helps...
rob is offline   #6 Reply With Quote
Gumbytie
Senior Member
 
Join Date: Jun 2010
Location: Florida
Posts: 235

Old July 31st, 2012, 05:20 PM
Commissioner "Rob" Gordon, thank you for the reply. Man, I have really got to get out and see the final batman movie

Okay, so I tried your code and got an error. So let me make sure I get everything down correctly for check purposes.

Edge Name: Strong Attack
Unique ID: edgStrAtt

Eval Script
Phase: Pre-Traits Priority: 100 Index: 1

hero.childfound[skFighting].setlinkage[attribute,Attribute,"thingid.attrStr"]

Timing: Before: Calc trtFinal

When I go to test the newer Edge and code I get this error:



I am guessing user programming, I am not very familiar with Eval Scripts, have been lucky enough to cut and paste and modify mostly
Gumbytie is offline   #7 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old July 31st, 2012, 10:04 PM
Oops. I made a copy and paste error. The line of code needs to start with "perform".
Code:
perform hero.childfound[skFighting].setlinkage[attribute,Attribute,"thingid.attrStr"]
Also, you should get rid of the timing requirement. And I'd probably feel safer putting the overall timing at Setup/1000 instead of at the start of the Pre-Traits phase.

Sorry for the error in the original post.
rob is offline   #8 Reply With Quote
Gumbytie
Senior Member
 
Join Date: Jun 2010
Location: Florida
Posts: 235

Old August 1st, 2012, 07:59 AM
So it was all about performance

That fixed, all working correctly, thank you very much.

FYI, for anyone who may have used the "Replace Thing ID" box, and then realizes, oops, I don't want to. The only way I could undo my mistake was to open my data file in an xml editor (or similar), find the offending replacement and delete it.

Cheers.
Gumbytie is offline   #9 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old August 1st, 2012, 12:23 PM
Quote:
Originally Posted by Gumbytie View Post
FYI, for anyone who may have used the "Replace Thing ID" box, and then realizes, oops, I don't want to. The only way I could undo my mistake was to open my data file in an xml editor (or similar), find the offending replacement and delete it.
You can also open the file in the Editor, delete the thing, save the file, and *not* click the "Test Now" button. Instead, switch back to Hero Lab, go to the Develop menu, and select "Compile Files". You can then just reload the game system and be good to go. So it doesn't have to be such an onerous task as manually editing the data file.

Because the "Replace Thing ID" mechanism operates at such a low level, the standard mechanisms used in Hero Lab to speed up the development cycle can't be leveraged. Once the material is deleted, you need to reload the game system to fully wipe the interconnections away.

Hope this helps...
rob is offline   #10 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:55 AM.


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