Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Pathfinder Roleplaying Game

Notices

Reply
 
Thread Tools Display Modes
Flappi
Junior Member
 
Join Date: Jun 2010
Posts: 26

Old July 7th, 2010, 06:05 AM
Hello,

I have some issue when implementing some house rules; I use the "replace thing ID" to override the normal thing, and since I want the thing to be use only in a selected game, I add a source as well to hide it in other games.

My problem is the order for accomplishing "replace" and "source": the program replace the thing first, then check if the thing is available by sources. Which means, if I don't use the source, the thing simply doesn't exist.

For instance, let's say in Alice's game, weapon finesse add the Dex to damage. I copy the feat, change it, use "replace thing ID" to override the standard feat, and add the source "Alice's game". But I also play in Bob's game, who don't use that rule. The problem is, when I create a character for Bob's game, the feat cease to exist: the normal feat is overridden by the new feat, and the new feat isn't available since the source "Alice's game" isn't selected.


I see a way to do what I want to do, it's to keep the normal feat, and add conditions in all eval script, bootstrap, etc; something like this for eval scripts:
Code:
if (hero.tagis[source.toto]<>0) then
  ~house rule here
else
  ~official rule here
endif
Is there another way to override a thing if and only if a source is selected ?
Flappi is offline   #1 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old July 8th, 2010, 01:45 PM
As you discovered, the "Replace Thing Id" is *always* applied. It's purpose is for when you want to completely replace a built-in thing with your own customized behaviors. You can't do it conditionally.

In order to have the behavior be conditional on a source, you'll need to define two things. First, you need to define the new feat that will be used in Alice's game, and then make it dependent on the source tag, just like you've already done. But do *not* have this new feat replace the standard one.

The second step is to create a copy of the standard feat for Bob's game. This one should be designated to replace the standard feat using the "Replace Thing Id". The only change you need to make to this thing is to have it be conditional on the source *not* being selected. Every source defines a global tag that you can test against, and the standard "Sources" mechanism provides a simplified way of checking for the selection of a source, but you need to check that a source is *not* present, so you can't use the simplified mechanism. This is achieved by adding a ContainerReq to the new thing via the button on the right within the Editor. For the ContainerReq, select the phase "Testing Global Tags". For the tag expression, enter "!source.MySource", where "MySource" is the id of the new source you've defined for Alice's game. Then save the thing.

At this point, you have two distinct things. One of them is only used when the source for Alice's game is enabled and the other is used whenever the source is *not* selected.

Another simple way to handle things like this is to clone the complete set of data files for the game system. You can go to the Tools menu and select the "Duplicate Game System" option. This will create a copy of the data files that you can customize independently of the standard data files. If Alice's game has lots of customizations, you can copy the Pathfinder files as "Alice's Game". Then you can add the customized things specific to her game only to that set of data files. When you create a character for Alice's game, use that set of data files. Otherwise, use the standard set of data files.

Hope this helps....
rob is offline   #2 Reply With Quote
Flappi
Junior Member
 
Join Date: Jun 2010
Posts: 26

Old July 9th, 2010, 04:43 AM
Doesn't the first solution have some problems with bootstraps ?

Let's keep the above example: Weapon Finesse is modified in Alice's game but not in Bob's game. I duplicate the feat, use the "replace thing id" and use the condition "!source.Alice" in the ContainerReq; and I create a new feat with the source "Alice".

Now, in Alice's game, I create a wizard, with a familiar. The familiar automatically has the feat "Weapon Finesse", and in the file structure, it is translated by a bootstraps: the familiar race has a bootstraps with Weapon Finesse. With the "replace thing id", the bootstrap is now the feat with the CotainerReq's condition "!source.Alice" (and that's why "replace thing ID" is very convenient: you don't have to care about any other things, any script/bootstrap/anything will point to the replacing thing), and then, the bootstrap is simply ignored. Am I wrong ?



For now I use the second solution; and if Bob use some of the Alice's house rules, I copy the things accordingly in the .user file. But it can be tedious if the house rule has many interdependencies, like a class variant, with new custom class abilities and variant of class ability: that's why I think it would be very convenient to add an option for "conditional id replace".
Flappi is offline   #3 Reply With Quote
risner
Senior Member
Volunteer Data File Contributor
 
Join Date: Jun 2010
Posts: 623

Old July 9th, 2010, 05:07 AM
Quote:
Originally Posted by Flappi View Post
I think it would be very convenient to add an option for "conditional id replace".
I just used this extensively, and I didn't realize it has this issue.

It apparently doesn't work like I thought. The conditional id replacement is sort of what I expected (such as conditional replacement depending on whether or not that source is attached.)
risner is offline   #4 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old July 9th, 2010, 05:14 PM
Hmmm. Good catch. I wasn't thinking of a scenario like that. It seems you'll actually need *three* things then.

First, create two things as duplicates of the standard Weapon Finesse feat. Neither of them should use the "Replace Thing Id" option. One should be the standard feat, with a dependency on the Alice source not being defined, while other is the modified version that is dependent on the Alice source.

Now for the third thing. This new thing uses the "Replace Thing Id" mechanism and replaces the standard Weapon Finesse feat. However, this feat should do absolutely nothing. All the behaviors should be eliminated from the feat. The only thing it should do is bootstrap the two things defined above. This way, the replacement feat is always added, regardless of whether the source is enabled or not, and it will always add one of the two things, depending on the source.

The only thing you need to do now is to make sure the first two things are hidden from display, else you'll have two entries listed all the time. I can't remember the proper tag for this in Pathfinder. If you don't know it either, Mathias ought to be able to point it out.
rob is offline   #5 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old July 9th, 2010, 05:22 PM
Quote:
Originally Posted by Flappi View Post
that's why I think it would be very convenient to add an option for "conditional id replace".
I'll add this to the todo list. However, the replacement logic is done at a much lower level than the source handling. As such, some very fundamental code will need to be overhauled to add the capability, so adding conditional id replacement will entail a great deal of work.
rob is offline   #6 Reply With Quote
Flappi
Junior Member
 
Join Date: Jun 2010
Posts: 26

Old July 10th, 2010, 05:48 AM
Quote:
Originally Posted by rob View Post
The only thing you need to do now is to make sure the first two things are hidden from display, else you'll have two entries listed all the time.
It seems to be easy for special abilities, and maybe for feats (I didn't test for feats). I can't find the same for more complex things like competences.
Flappi is offline   #7 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,213

Old July 10th, 2010, 06:47 PM
Competences? I'm afraid I don't recognize that term (as used in Pathfinder).
Mathias is offline   #8 Reply With Quote
Flappi
Junior Member
 
Join Date: Jun 2010
Posts: 26

Old July 11th, 2010, 02:31 AM
Oups, I mean skills. (I'm French and sometimes, I forgot to "un-translate" a term x) ).
Flappi is offline   #9 Reply With Quote
Thazar
Senior Member
 
Join Date: Jun 2010
Location: Sunny WA State
Posts: 141

Old July 13th, 2010, 12:39 PM
Thanks for pointing out that you can duplicate the game system. I played with it a bit and it is pretty good and how I want to go. But I do have a question.

What I would like is to have two copies of Pathfinder... something like Pathfinder and Pathfinder_Houserules. I did this and now when I load the game up I get to pick from either game (along with all the other systems) and then it loads great. The main reason I am separating them is due to Pathfinder Society/Convention character generation.

My plan is to have the Pathfinder Core only contain info provided by HeroLab via direct patch. This would be helpful for Pathfinder Society and Conventions. The house ruled version would be greatly changed and I would share the user file with my gaming group for what we have all agreed to. As I use the Replace Thing and Hidden Thing features this is pretty much needed.

So how do I go about patching the house rule version of the game? Will it patch the same way Pathfinder does automatically or do I need to take extra steps? (I understand that I may need to make some tweaks after a patch to my user file.)

Thanks for you time.
Thazar 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 06:14 AM.


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