• 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

Deadlands Reloaded Fixes

SeeleyOne

Well-known member
I have been going through the data file for Deadlands Reloaded, making it match better with my house rules. I am still going through the edges at this point, but I have some fixes.

Snakeoil Salesman's eval script should be this, as it is a Professional Edge
Code:
      ~profesional bonuses do not stack
      perform #traitprof[skPersuade,+,2,"Snakeoil Salesman"]
      perform #traitprof[skStreet,+,2,"Snakeoil Salesman"]

Likewise Wilderness Man, which had the Eval script exactly like Snakeoil Salesman, should be this:
Code:
      ~profesional bonuses do not stack
      perform #traitprof[skSurvival,+,2,"Wilderness Man"]
      perform #traitprof[skTracking,+,2,"Wilderness Man"]
 
I added in the rank table for Agent, CSA and Union Soldiers, and Texas Ranger. To handle promotions, I made injuries for each promotion type. It is the easiest way to handle it during play.

Then I made separate edges for Union and CSA for each of Private, NCO, and Officer. Those edges preclude the others (Pick-reqs with the Preclude checked). This way you can start as a Private and go up to General, or start a with a bit of a head start (+2 for NCO and +6 for Officer).

Why do some of the if statements seem convoluted? There is a limit of 6 (I think), after which Hero Lab will ignore everything after that point. So I got around that by making ifs inside of ifs.

Agent
Code:
~Output the Rank Grade

var Grade as number
var Pay as number
var Allotment as number
Grade = 0
Pay = 0
Allotment = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLAgent] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >5) then
    Grade = 5
endif

~Determine results
if (Grade = 0) then
    Pay = 40
    Allotment = 500
elseif (Grade = 1) then
    Pay = 60
    Allotment = 1000
elseif (Grade = 2) then
    Pay = 80
    Allotment = 2000
elseif (Grade = 3) then
    Pay = 120
    Allotment = 4000
elseif (Grade = 4) then
    Pay = 150
    Allotment = 8000
elseif (Grade >= 5) then
    Pay = 200
    Allotment = 1500
endif

~Print the results
    field[livename].text = field[thingname].text & " (Grade " & Grade & ", Pay $" & Pay & ", Allotment $" & Allotment & ")"
Texas Ranger
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Pay as number

Grade = 0
Rank = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLTXRan] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >9) then
    Grade = 9
endif

~Determine Rank
if (Grade < 5) then
    if (Grade = 0) then
        Pay = 43
        Rank = "Private"
    elseif (Grade = 1) then
        Pay = 45
        Rank = "Corporal"
    elseif (Grade = 2) then
        Pay = 52
        Rank = "Sergeant"
    elseif (Grade = 3) then
        Pay = 60
        Rank = "1st Sergeant"
    elseif (Grade = 4) then
        Pay = 130
        Rank = "2nd Lieutenant"
    endif
elseif (Grade >= 5) then
    if (Grade = 5) then
        Pay = 135
        Rank = "1st Lieutenant"
    elseif (Grade = 6) then
        Pay = 140
        Rank = "Captain"
    elseif (Grade = 7) then
        Pay = 194
        Rank = "Major"
    elseif (Grade = 8) then
        Pay = 206
        Rank = "Lt Colonel"
    elseif (Grade = 9) then
        Pay = 237
        Rank = "Colonel"
    endif
endif

~Print the results
    field[livename].text = field[thingname].text & " (" & Rank & ", Pay $" & Pay & ")"
 
(There is a post size limit)

CSA Private
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Command as string
var Pay as number

Grade = 0
Rank = "--"
Command = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLSoCSA] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >15) then
    Grade = 15
endif

~Determine Enlisted, NCO, or Officer
if (Grade < 2) then
    if (Grade = 0) then
        Pay = 17
        Rank = "Private"
        Command = ""
    elseif (Grade = 1) then
        Pay = 20
        Rank = "Corporal"
        Command = ""
    endif
elseif (Grade >= 2) then
    if (Grade < 6) then
        if (Grade = 2) then
            Pay = 25
            Rank = "Sergeant"
            Command = "Squad"
        elseif (Grade = 3) then
            Pay = 35
            Rank = "Ordnce Srgnt"
            Command = "Squad"
        elseif (Grade = 4) then
            Pay = 50
            Rank = "Qurtrmstr Srgnt"
            Command = "Platoon"
        elseif (Grade = 5) then
            Pay = 65
            Rank = "Sergeant Major"
            Command = "Company"
        endif
    elseif (Grade >= 6) then
        if (Grade < 11) then
            if (Grade = 6) then
                Pay = 25
                Rank = "2nd Lieutenant"
                Command = "Platoon"
            elseif (Grade = 7) then
                Pay = 30
                Rank = "1st Lieutenant"
                Command = "Platoon"
            elseif (Grade = 8) then
                Pay = 35
                Rank = "Captain"
                Command = "Company"
            elseif (Grade = 9) then
                Pay = 40
                Rank = "Major"
                Command = "Company"
            elseif (Grade >= 10) then
                Pay = 60
                Rank = "Lieut Colonel"
                Command = "Battalion"
            endif
        elseif (Grade >= 11) then
            if (Grade = 11) then
                Pay = 75
                Rank = "Colonel"
                Command = "Regiment"
            elseif (Grade = 12) then
                Pay = 100
                Rank = "Brgdr General"
                Command = "Brigade"
            elseif (Grade = 13) then
                Pay = 200
                Rank = "Major General"
                Command = "Division"
            elseif (Grade = 14) then
                Pay = 400
                Rank = "Lieut General"
                Command = "Corps"
            elseif (Grade >= 15) then
                Pay = 800
                Rank = "General"
                Command = "Army"
            endif
        endif
    endif
endif

~Print the results
    field[livename].text = "Soldier: Union (" & Rank & ", Pay $" & Pay & " " & Command & ")"
CSA NCO
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Command as string
var Pay as number

Grade = 2
Rank = "--"
Command = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLSoCSA] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >15) then
    Grade = 15
endif

~Determine Enlisted, NCO, or Officer
if (Grade < 2) then
    if (Grade = 0) then
        Pay = 17
        Rank = "Private"
        Command = ""
    elseif (Grade = 1) then
        Pay = 20
        Rank = "Corporal"
        Command = ""
    endif
elseif (Grade >= 2) then
    if (Grade < 6) then
        if (Grade = 2) then
            Pay = 25
            Rank = "Sergeant"
            Command = "Squad"
        elseif (Grade = 3) then
            Pay = 35
            Rank = "Ordnce Srgnt"
            Command = "Squad"
        elseif (Grade = 4) then
            Pay = 50
            Rank = "Qurtrmstr Srgnt"
            Command = "Platoon"
        elseif (Grade = 5) then
            Pay = 65
            Rank = "Sergeant Major"
            Command = "Company"
        endif
    elseif (Grade >= 6) then
        if (Grade < 11) then
            if (Grade = 6) then
                Pay = 25
                Rank = "2nd Lieutenant"
                Command = "Platoon"
            elseif (Grade = 7) then
                Pay = 30
                Rank = "1st Lieutenant"
                Command = "Platoon"
            elseif (Grade = 8) then
                Pay = 35
                Rank = "Captain"
                Command = "Company"
            elseif (Grade = 9) then
                Pay = 40
                Rank = "Major"
                Command = "Company"
            elseif (Grade >= 10) then
                Pay = 60
                Rank = "Lieut Colonel"
                Command = "Battalion"
            endif
        elseif (Grade >= 11) then
            if (Grade = 11) then
                Pay = 75
                Rank = "Colonel"
                Command = "Regiment"
            elseif (Grade = 12) then
                Pay = 100
                Rank = "Brgdr General"
                Command = "Brigade"
            elseif (Grade = 13) then
                Pay = 200
                Rank = "Major General"
                Command = "Division"
            elseif (Grade = 14) then
                Pay = 400
                Rank = "Lieut General"
                Command = "Corps"
            elseif (Grade >= 15) then
                Pay = 800
                Rank = "General"
                Command = "Army"
            endif
        endif
    endif
endif

~Print the results
    field[livename].text = "Soldier: Union (" & Rank & ", Pay $" & Pay & " " & Command & ")"
CSA Officer
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Command as string
var Pay as number

Grade = 6
Rank = "--"
Command = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLSoCSA] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >15) then
    Grade = 15
endif

~Determine Enlisted, NCO, or Officer
if (Grade < 2) then
    if (Grade = 0) then
        Pay = 17
        Rank = "Private"
        Command = ""
    elseif (Grade = 1) then
        Pay = 20
        Rank = "Corporal"
        Command = ""
    endif
elseif (Grade >= 2) then
    if (Grade < 6) then
        if (Grade = 2) then
            Pay = 25
            Rank = "Sergeant"
            Command = "Squad"
        elseif (Grade = 3) then
            Pay = 35
            Rank = "Ordnce Srgnt"
            Command = "Squad"
        elseif (Grade = 4) then
            Pay = 50
            Rank = "Qurtrmstr Srgnt"
            Command = "Platoon"
        elseif (Grade = 5) then
            Pay = 65
            Rank = "Sergeant Major"
            Command = "Company"
        endif
    elseif (Grade >= 6) then
        if (Grade < 11) then
            if (Grade = 6) then
                Pay = 25
                Rank = "2nd Lieutenant"
                Command = "Platoon"
            elseif (Grade = 7) then
                Pay = 30
                Rank = "1st Lieutenant"
                Command = "Platoon"
            elseif (Grade = 8) then
                Pay = 35
                Rank = "Captain"
                Command = "Company"
            elseif (Grade = 9) then
                Pay = 40
                Rank = "Major"
                Command = "Company"
            elseif (Grade >= 10) then
                Pay = 60
                Rank = "Lieut Colonel"
                Command = "Battalion"
            endif
        elseif (Grade >= 11) then
            if (Grade = 11) then
                Pay = 75
                Rank = "Colonel"
                Command = "Regiment"
            elseif (Grade = 12) then
                Pay = 100
                Rank = "Brgdr General"
                Command = "Brigade"
            elseif (Grade = 13) then
                Pay = 200
                Rank = "Major General"
                Command = "Division"
            elseif (Grade = 14) then
                Pay = 400
                Rank = "Lieut General"
                Command = "Corps"
            elseif (Grade >= 15) then
                Pay = 800
                Rank = "General"
                Command = "Army"
            endif
        endif
    endif
endif

~Print the results
    field[livename].text = "Soldier: Union (" & Rank & ", Pay $" & Pay & " " & Command & ")"
 
Union Private
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Command as string
var Pay as number

Grade = 0
Rank = "--"
Command = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLSolUn] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >15) then
    Grade = 15
endif

~Determine Enlisted, NCO, or Officer
if (Grade < 2) then
    if (Grade = 0) then
        Pay = 20
        Rank = "Private"
        Command = ""
    elseif (Grade = 1) then
        Pay = 25
        Rank = "Corporal"
        Command = ""
    endif
elseif (Grade >= 2) then
    if (Grade < 6) then
        if (Grade = 2) then
            Pay = 30
            Rank = "Sergeant"
            Command = "Squad"
        elseif (Grade = 3) then
            Pay = 50
            Rank = "Ordnce Srgnt"
            Command = "Squad"
        elseif (Grade = 4) then
            Pay = 65
            Rank = "Qurtrmstr Srgnt"
            Command = "Platoon"
        elseif (Grade = 5) then
            Pay = 80
            Rank = "Sergeant Major"
            Command = "Company"
        endif
    elseif (Grade >= 6) then
        if (Grade < 11) then
            if (Grade = 6) then
                Pay = 30
                Rank = "2nd Lieutenant"
                Command = "Platoon"
            elseif (Grade = 7) then
                Pay = 40
                Rank = "1st Lieutenant"
                Command = "Platoon"
            elseif (Grade = 8) then
                Pay = 50
                Rank = "Captain"
                Command = "Company"
            elseif (Grade = 9) then
                Pay = 75
                Rank = "Major"
                Command = "Company"
            elseif (Grade >= 10) then
                Pay = 100
                Rank = "Lieut Colonel"
                Command = "Battalion"
            endif
        elseif (Grade >= 11) then
            if (Grade = 11) then
                Pay = 120
                Rank = "Colonel"
                Command = "Regiment"
            elseif (Grade = 12) then
                Pay = 200
                Rank = "Brgdr General"
                Command = "Brigade"
            elseif (Grade = 13) then
                Pay = 400
                Rank = "Major General"
                Command = "Division"
            elseif (Grade = 14) then
                Pay = 800
                Rank = "Lieut General"
                Command = "Corps"
            elseif (Grade >= 15) then
                Pay = 1600
                Rank = "General"
                Command = "Army"
            endif
        endif
    endif
endif

~Print the results
    field[livename].text = "Soldier: Union (" & Rank & ", Pay $" & Pay & " " & Command & ")"
Union NCO
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Command as string
var Pay as number

Grade = 2
Rank = "--"
Command = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLSolUn] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >15) then
    Grade = 15
endif

~Determine Enlisted, NCO, or Officer
if (Grade < 2) then
    if (Grade = 0) then
        Pay = 20
        Rank = "Private"
        Command = ""
    elseif (Grade = 1) then
        Pay = 25
        Rank = "Corporal"
        Command = ""
    endif
elseif (Grade >= 2) then
    if (Grade < 6) then
        if (Grade = 2) then
            Pay = 30
            Rank = "Sergeant"
            Command = "Squad"
        elseif (Grade = 3) then
            Pay = 50
            Rank = "Ordnce Srgnt"
            Command = "Squad"
        elseif (Grade = 4) then
            Pay = 65
            Rank = "Qurtrmstr Srgnt"
            Command = "Platoon"
        elseif (Grade = 5) then
            Pay = 80
            Rank = "Sergeant Major"
            Command = "Company"
        endif
    elseif (Grade >= 6) then
        if (Grade < 11) then
            if (Grade = 6) then
                Pay = 30
                Rank = "2nd Lieutenant"
                Command = "Platoon"
            elseif (Grade = 7) then
                Pay = 40
                Rank = "1st Lieutenant"
                Command = "Platoon"
            elseif (Grade = 8) then
                Pay = 50
                Rank = "Captain"
                Command = "Company"
            elseif (Grade = 9) then
                Pay = 75
                Rank = "Major"
                Command = "Company"
            elseif (Grade >= 10) then
                Pay = 100
                Rank = "Lieut Colonel"
                Command = "Battalion"
            endif
        elseif (Grade >= 11) then
            if (Grade = 11) then
                Pay = 120
                Rank = "Colonel"
                Command = "Regiment"
            elseif (Grade = 12) then
                Pay = 200
                Rank = "Brgdr General"
                Command = "Brigade"
            elseif (Grade = 13) then
                Pay = 400
                Rank = "Major General"
                Command = "Division"
            elseif (Grade = 14) then
                Pay = 800
                Rank = "Lieut General"
                Command = "Corps"
            elseif (Grade >= 15) then
                Pay = 1600
                Rank = "General"
                Command = "Army"
            endif
        endif
    endif
endif

~Print the results
    field[livename].text = "Soldier: Union (" & Rank & ", Pay $" & Pay & " " & Command & ")"
Union Officer
Code:
~Output the Rank Grade

var Grade as number
var Rank as string
var Command as string
var Pay as number

Grade = 6
Rank = "--"
Command = "--"
Pay = 0

~Check for Promotions
foreach pick in hero from Advance
    if (eachpick.tagis[IsAdvance.injDLSolUn] <> 0) then
        Grade += 1
    endif
nexteach

if (Grade >15) then
    Grade = 15
endif

~Determine Enlisted, NCO, or Officer
if (Grade < 2) then
    if (Grade = 0) then
        Pay = 20
        Rank = "Private"
        Command = ""
    elseif (Grade = 1) then
        Pay = 25
        Rank = "Corporal"
        Command = ""
    endif
elseif (Grade >= 2) then
    if (Grade < 6) then
        if (Grade = 2) then
            Pay = 30
            Rank = "Sergeant"
            Command = "Squad"
        elseif (Grade = 3) then
            Pay = 50
            Rank = "Ordnce Srgnt"
            Command = "Squad"
        elseif (Grade = 4) then
            Pay = 65
            Rank = "Qurtrmstr Srgnt"
            Command = "Platoon"
        elseif (Grade = 5) then
            Pay = 80
            Rank = "Sergeant Major"
            Command = "Company"
        endif
    elseif (Grade >= 6) then
        if (Grade < 11) then
            if (Grade = 6) then
                Pay = 30
                Rank = "2nd Lieutenant"
                Command = "Platoon"
            elseif (Grade = 7) then
                Pay = 40
                Rank = "1st Lieutenant"
                Command = "Platoon"
            elseif (Grade = 8) then
                Pay = 50
                Rank = "Captain"
                Command = "Company"
            elseif (Grade = 9) then
                Pay = 75
                Rank = "Major"
                Command = "Company"
            elseif (Grade >= 10) then
                Pay = 100
                Rank = "Lieut Colonel"
                Command = "Battalion"
            endif
        elseif (Grade >= 11) then
            if (Grade = 11) then
                Pay = 120
                Rank = "Colonel"
                Command = "Regiment"
            elseif (Grade = 12) then
                Pay = 200
                Rank = "Brgdr General"
                Command = "Brigade"
            elseif (Grade = 13) then
                Pay = 400
                Rank = "Major General"
                Command = "Division"
            elseif (Grade = 14) then
                Pay = 800
                Rank = "Lieut General"
                Command = "Corps"
            elseif (Grade >= 15) then
                Pay = 1600
                Rank = "General"
                Command = "Army"
            endif
        endif
    endif
endif

~Print the results
    field[livename].text = "Soldier: Union (" & Rank & ", Pay $" & Pay & " " & Command & ")"
 
I've sent a pretty heavily updated file to Caped Crusader that he may be working from that includes at least some of those, although none of that Rank methods you're using there (pretty cool). PM me if you want a link to a file that might be closer to what he'll be working with over the current one.
 
Oh yeah, another mod was Reputation, which adds either positive or negative Charisma to the Intimidation skill. Traits 5010

Code:
var reputation as number
reputation = hero.child[trcharisma].field[trtBonus].value

if (reputation >= 0) then
      perform #traitroll[skIntimid,+,reputation,"Reputation"]
endif

if (reputation < 0) then
      perform #traitroll[skIntimid,-,reputation,"Bad Reputation"]
endif
 
I decided to use Hindances for each promotion instead. It can use the no print option right off and also require the edge or source that is using it.

Change the from Advance to from Hindrance and the tag to Hindrance.hinwhatever

I made 4 of them for the Harrowed and have the Dominion value show up with the Harrowed. The Dominion trait is no longer needed, unless you prefer that way.
 
Having used this one in play several time I can say that personally I prefer having a tracker for Dominion showing up along with the rest of my derived traits. Keeps everything together with a simple way to change it and makes it easier to find when the GM suddenly asks for the roll. Plus that keeps it consisted with how it's implemented in Hell on Earth: Reloaded and Deadlands Noir.

I also have a request in the thread for that to maybe give us some kind of grouping on the Advances tab like Hindrances or Injuries or the like that doesn't ever charge you anything (like an Edge would) but that arent' necessarily Edges or Hindrances at all. Which I think would be better used for things like Coup, Mutations, Promotions, etc.
 
We're going to do a total overhaul of the Deadlands file. Zarlor and Dartnet have both contributed some ideas, so we're going to go through the entire file.
 
Zarlor had sent me his file and it helped a ton (thanks again). I was able to finish integrating it (and altering some scripts) with my house rules last week.

One thing that I did in my file was for the Soldier, Agent, and Texas Ranger, I used the new autoadd feature instead of bootstrapping. Since that is new I figure that other people will likely want to know how I did it.

For the Private, I did four auto-adds.

The first was for the bedroll
Thing: eqDLBedrol
Portal ID: grGear

The second was for the canteen
Thing: eqDLCantee
Portal ID: grGear

The third was for the rifle
Thing: wpDLWinc73
Portal ID: arRange

The fourth was for ammo for the rifle
Thing: eqDLB4440R
Portal ID: grGear
This needs some fields. One or more of these might be redundant, but I used four:
trkUser value:20
trkLeft value: -20
trkMax value: 20
stackQty value: 20

I noticed that if you auto-add an item that has already been added to a character, such as if the user had already bought some ammo, that the new ammo will be added to it if is the same caliber. However, if you were a soldier and had another edge of some sort that also auto-adds some ammo it will have two piles of it if that ammo type did not already exist on the character. Adding more manually (like normal) can merge it, as can clicking on the bag icon.
 
The more the merrier, I say. :) Heck, SeelyOne has a copy of my latest DLR file so once you start working on it you may want to grab his updated version instead to see how it pans out.
 
OK, this one is not absolutely necessary, but it is a mod that may be useful to people. It makes it so that you can dynamically change your starting wealth based on if a setting is on or not.

Normally this is done as a simple Eval script that generates the new value.
Setup, 4000
trustme
herofield[acCashCfg].value = 250

That works, but the disadvantage is that you really have to boot up the character with the source checked in the first place. That is best done with making a default character or starting on your character, saving, then reloading it. But that can be annoying.

The fix? Well, it really is game group specific as you can tweak it for all of your settings, but with just Deadlands it is this:
trustme
var cash as number
cash = 500

if (hero.tagis[source.Deadlands] <> 0) then
cash = 250
endif

herofield[acCashCfg].value = cash

Further mods might make it so that it will take a different amount if, say Deadlands and a different setting were checked at the same time (what if you wanted to use Deadlands stuff in a different campaign world?).

Anyway someone might find this useful.
 
Back
Top