• 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

Conditionally excluding .user files?

Endtransmission

Well-known member
A couple of conversations yesterday sparked a question for those of you with much more experience than me. Is there any way to specify that a .user file (or part thereof) shouldn't be loaded if another .user file or data set isn't available?

It feels like this is something the .1st file should be good for as it is setting up the new sources. Using the equivalent of a pickreq or exprreq that looks for another setting would be useful.

Two examples:

1) Excluding an entire .user file if one of the Horror/Supers/Fantasy add-on is missing (or other .user files come to think of it)

2) Excluding parts of a .user file if another setting is missing. e.g. I will need to create crossovers within the A!C setting to things like Godlike and Interface Zero. If someone doesn't have that setting loaded, it would be useful to ignore anything that has that prerequisite rather than my user file erroring

I'm not sure if this is something I've missed, or something that should be a new request?
 
Damn, that's a shame. At least I have a few source books to work through before I have to worry about how to handle that challenge then. Thanks!
 
I have not figured out a way to make it look for tags that do not exist. If you could, an easy way would be to have it increment a value if it finds a match as it sorts through the different tags. I could not figure out what the group of source tags is called. The only reference to the group that I was able to find is "Source Volumes", but I do not know how to reference that as the script would not recognize "Source", "Sources", "Volume", or "Volumes". So if there is a way to iterate through the sources that woudl be what we need.

But that does not mean that you are totally out of options. You can change how a mechanic works based on if a source that is in the folder is checked or not.

The easiest scenario is if you want to change how a mechanic works in a game. For example, I like to use the Evasion skill to create a Parry value. But the other GM's in my group do not always want that rule. But we don't want to have to add or remove user files from the folder because that is tedious and can be annoying.

So, what I did was I made a replacement of the Parry derived trait. Then in the first eval script for the new Parry I put this:
Code:
~ Base Parry on either Evasion or Fighting
if (hero.tagis[source.EvaFight] = 1) then
   ~This will base Parry on Evasion.
   if (hero.childexists[skEvasion] <> 0) then
      if (#traitfound[skEvasion] >= 2) then
        var bonus as number
        bonus = #trait[skEvasion]
        if (bonus >= 6) then
          bonus = 6 + round(hero.child[skEvasion].field[trtRoll].value / 2,0,-1)
          endif
        perform field[trtBonus].modify[+,bonus,"Half Evasion"]
        endif
   endif
else
   ~ This will base Parry on Fighting.
   if (hero.childexists[skFighting] <> 0) then
        var bonus as number
        bonus = #trait[skFighting]
        if (bonus >= 6) then
          bonus = 6 + round(hero.child[skFighting].field[trtRoll].value / 2,0,-1)
        endif
     perform field[trtBonus].modify[+,bonus,"Half Fighting"]
   endif
endif

Again, the above requires that both sources actually exist somewhere in the savage folder.

For a user file that you want to work if a certain thing is present (like if you have the Horror Companion), am not entirely sure. I mean, I think that the data is there whether or not you paid for the data. I do not know as I own all of them. But assuming that it IS there, you can use modified things like above. If it is using insanity, then have it just use the Horror as its source.

It seems to me that containerreq, where you can require multiple sources, does not work for derived traits. They work only during character creation for Skills and Edges (but they hide things during Adcancement regardless of if you have the sources or not).

Another idea might be to have the main data file, then a second one to add to your folder if you have other sources that it requires. So the Achtung Cthulu user, then the ACHorror user. You could also make them two totally functional, mutually exclusive versions -- this is easier for some situations.
 
Oh this is going to be fun :/

I suspect that I will end up with the main data file and separate ones for each of the crossover books. Thanks!
 
Yeah. I appreciate the hell out of the help SeelyOne has given me on various problems, but occasionally the response to "Is there any way to do X" is "Here's this giant block of script that will do what you want, oh, maybe with this other giant block of script if you need to do this other thing too." Its a credit to him that this stuff seems to come naturally to him, but occasionally the rest of us look at it and quietly and slowly back out of the room...
 
No, it's not that. The code I can work through, it was the thought of trying to do this for every item in the three crossover books... and then working out which ones work in which combination and under what circumstances that started to give me a headache :D

It is just simpler to have separate, additional, files for each of these crossovers and leave it up to the user to decide when to use them. It just means that those source books will, most likely, not be able to be distributed through the LW mechanism.

Having said that, that is fine with me as the crossover books can be left for last as two of them havn't even been released in beta yet! Gives me time to finish off the other source books first and think things over carefully.
 
No, it's not that. The code I can work through, it was the thought of trying to do this for every item in the three crossover books... and then working out which ones work in which combination and under what circumstances that started to give me a headache :D

That's the gig though; if it was just a cut-and-paste specific code thing, no one would be bothered. But often you have to figure out which part needs to work with which part and do a lot of adjustment and often it either means some brute force approach is better or what's being done just isn't worth it.
 
When I offer help and give multiple options I am doing just that, giving multiple options. Some are better than others for different reasons. And even if they might not be the best solution for one situation, someone might later come along and they will be the best solution for another.
 
Like I said, SO, you've been an enormous help. It was more a comment about how good you are at this that you often find away around the program limitations--but kind of illustrate those limitations in some of the backflips you've had to do to do it.
 
Back
Top