Lone Wolf Development Forums  

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

Notices

Reply
 
Thread Tools Display Modes
zarlor
Senior Member
 
Join Date: Nov 2010
Location: Metairie, LA, USA
Posts: 1,819

Old January 11th, 2013, 04:40 AM
I thought I would consolidate a list of things that get used over and over again in the Editor, or that I have otherwise found to be very useful. Hopefully this will be helpful for those, like me, who work best from having lots and lots of examples.

First I have found it very useful to go through the documentation found in Hero Lab by going to Help -> Savage Worlds Manual and from within that Manual there is a link to "Creating Custom Material" that also has some useful, although maybe a little confusing, stuff in it. But probably the most useful section I found was a little more buried. Go to Help -> Savage Worlds Manual, then click on "Adding Custom Content" then hit the "Click here" part of the sentence that says "Click here for more information on using the Editor with Savage Worlds." That information and the Tutorials section there on creating a Race is something I found to be really helpful. Finally I found the Expressions at http://hlkitwiki.wolflair.com/index....ag_Expressions to be very useful as well. I would also add that Mathias has written some really useful posts on the Pathfinder forum which he links here. Some of his examples may look Pathfinder specific, but they're still very relevant for coding in Savage Worlds files, too.

Now on to the examples. Remember that in most cases we might list Edges or Skills below, but those really could be anything, where appropriate, so Hindrances or Equipment or Racial Abilities, whatever it is you have the UniqueID for. Also remember that for Savage Worlds the die type numbers are half the actual die type for our purposes in the program. So a d4 is 2, a d6 is 3, d8 is 4, a d12 is 6 and then anything higher than 6 turns into d12+(your number-6), so 7 is d12+1, 10 is d12+4 and so on.

So on to some specific code things I've found useful.

-----
To grant a specific skill at d6 (we use Healing in this example):

Bootstrap: skHealing
Eval Script: Pre-Traits/5000

Code:
~This will offset the cost:
perform #resspent[resSkill,-,1,"Chaplain"]

~This will increase the Skill
foreach pick in hero where "thingid.skHealing"
  eachpick.field[trtBonus].value += 1
nexteach
Note here that we had to use a Bootstrap to add the Healing Skill, then we offset the cost of it to make it free to have it, and finally we added "1" to the die type, since the Bootstrap gave us the skill at d4. if we added "2" we could start with a d8 in the skill, and so on.

To do that for a set Knowledge skill, let's use Knowledge (Latin) for this example:

Bootstrap: skKnow Fields...: FieldID: domDomain, Value: Latin


Code:
~This will offset the cost:
perform #resspent[resSkill,-,1,"Latin"]

~This will increase Latin
 foreach pick in hero where "thingid.skKnow"
   if (compare(lowercase(eachpick.field[domDomain].text),"latin") = 0) then
      perform eachpick.field[trtBonus].modify[+,1,"Latin"]
   endif
 nexteach
-----
To modify a skill (or other trait,in this case we'll use Guts) roll, adding a +2 bonus to the roll rather than the die type, use (the thing in quotes is just a way of saying what it was that provided the bonus, in this case we're saying it's something called "Gutsy", maybe that's an Edge or a Racial Ability, what it is doesn't matter much, just make it understandable for why the bonus was given.):

Eval Script: Pre-Traits/5000 Timing: Before: Calc trtFinal

Code:
perform #traitroll[skGuts,+,2,"Gutsy"]
If you want to make sure that bonus doesn't stack with other bonuses, then use #traitprof instead of #traitroll.

-----
To modify a skill (again, we'll use Guts) by adding one die type use:

Eval Script: Pre-Traits/5000 Timing: Before: Calc trtFinal

Code:
perform #traitadjust[skGuts,+,1,"Gusto"]
-----
To search for an appropriate Knowledge skill (in this case Astronomy) of d10 or higher:

Pre-reqs:
Message: Knowledge (Astronomy) d10 required.

Code:
foreach pick in hero where "thingid.skKnow"
   if (compare(lowercase(eachpick.field[domDomain].text),"astronomy") = 0) then
      validif (eachpick.field[trtFinal].value >= 5)
   endif
nexteach
-----
To find a Knowledge field (in this case Arcane) and then add a bonus (+2) to the roll:

Eval Script: Pre-Traits/5000 Timing: Before: Calc trtFinal

Code:
~go through all knowledge skills and find an "Arcane" one
foreach pick in hero where "thingid.skKnow"
   if (compare(lowercase(eachpick.field[domDomain].text),"arcane") = 0) then
      perform #traitroll[skKnow,+,2,"Highest Clearance"]
   endif
nexteach
Don't forget you can replace #traitroll with #traitadjust in the above if you want to add die types instead of roll bonuses.

-----
How about doing the reverse of that by finding a Knowledge field (in this case Arcane) and only adding a +2 bonus to everything that is NOT that version:

Eval Script: Pre-Traits/5000 Timing: Before: Calc trtFinal

Code:
~go through all knowledge skills and find an "Arcane" one
foreach pick in hero where "thingid.skKnow"
   if (compare(lowercase(eachpick.field[domDomain].text),"arcane") <> 0) then
      perform eachpick.field[trtRoll].modify[+,1,"Smarty Pants"]
   endif
nexteach
-----
To check if any one of a particular thing exists, like you would use in a Pick-req, but where we're not just looking for a single Edge to exist but rather if any one of a list of Edges exist. For this example we have Edges for both NCO and Officer and I just want to check that the character has either one of those edges:

Expr-reqs:
Message: Rank (NCO or Officer) Edge required.
Code:
hero.tagis[Edge.edgTDNCO] + hero.tagis[Edge.edgTDOffic] <> 0
-----
To check if any one of different criteria exist. This one is a bit more complicate. Let's say you wanted to check for if a character has either a Spirit of d8 OR a particular Edge (we'll use Nepotism for this, from Necropolis):

Pre-reqs:
Message: Spirit d8 required.

Code:
validif (hero.child[attrSpi].field[trtFinal].value >= 4)
validif (hero.tagis[Edge.edgNCNepot] <> 0)
if (@ispick <> 0) then
   altpick.linkvalid = 0
endif
Now say you needed that to be a Knowledge skill instead, say Artillery d6, in which case we could use:

Code:
foreach pick in hero where "thingid.skKnow"
  if (compare(lowercase(eachpick.field[domDomain].text),"artillery") = 0) then
    validif (eachpick.field[trtFinal].value >= 3)
  endif
nexteach
validif (hero.tagis[Edge.edgNCNepot] <> 0)
if (@ispick <> 0) then
   altpick.linkvalid = 0
endif

The "if (@ispick <> 0) then" part of that code is primarly just an error trap, so it seems it should be good practice to use it in this instance. (See http://forums.wolflair.com/showthread.php?t=33096 for more details.)

-----
To level up a character, like the Veteran of the Wierd West Edge does in Deadlands:

Eval Script: Pre-Traits/5000 Timing: Before: Calc trtFinal

Code:
#resmax[resXP] += 20
#resmax[resAdvance] +=4
It appears that you need to both add the XP AND the number of Advances that XP would give you to get these to work right.

-----
For Expr-reqs it's important to note that if you are looking to check against a Trait that you KNOW every character has, like any of the Attributes (say, Spirit of d6 or higher) you an use something like:

Code:
#trait[attrSpi] >= 3
To check for a Spirit of d6. However, if you are looking for something that any partcular character might NOT have at all, like a skill (say, Boating at d6 or higher) then you need to use the #traitfound expression instead, so:

Code:
#traitfound[skBoating] >= 3
-----
To add an extra wound level:

Eval Scripts: Setup/10000

Code:
herofield[acMaxWound].value += 1
-----
To have the program ignore some amount of wound penalties (like for the Nerves of Steel Edge):

Eval Scripts: Setup/10000

Code:
herofield[acIgnWound].value += 2
-----
To perform different actions based on the existence of a certain Edge. In this example I have a derived trait called Fame (trPMFame) and if this character has the Noble edge (edgPMNoble) I want to add 15 points to the Fame trait, but if they don't have the Edge I want to give them 10 points of fame instead.

Eval Script: Pre-Traits/5000 Timing: Before: Calc trtFinal

Code:
if (hero.tagis[Edge.edgPMNoble] <> 0) then
   perform #traitadjust[trPMFame,+,15,"Admiral"]
 else
   perform #traitadjust[trPMFame,+,10,"Admiral"]
endif
-----
To add extra damage onto a weapon, in this case jbearwillis asked for (and CapedCrusader provided the code) the ability to add an extra 1/2 Agility die modifier to damage for a weapon:

Eval Script: Traits/5000 Timing: Before: Calc trtFinal

Code:
var DamagePlus as number
DamagePlus = hero.childfound[attrAgi].field[trtFinal].value - 1
field[wpDmgBonus].value += DamagePlus
-----
To create a drop-down "pick list", let's say to apply a +1 roll bonus to one of three skills (the Scholar Edge is another example worth looking at):

Menu #1 Source: All Picks on Hero (this will make sure you don't get an error for trying to modify a skill that doesn't exist on the character)
Menu #1 Tag Expression: thingid.skBoating | thingid.skDriving | thingid.skPiloting
Eval Scripts: Pre-Traits/5000 - Before: Calc trtFinal

Code:
~apply the +1 modifier to selected skill
if (field[usrChosen1].ischosen <> 0) then
   perform field[usrChosen1].chosen.field[trtRoll].modify[+,1,"Ordo Novus Templum"]
endif
-----
To create a weapon that doesn't use up your "hand slots", like you might use for a shoulder mounted weapon in power armor, or retractable claws:

Eval Script
Phase: Pre-Traits/5000

Code:
if (field[grIsEquip].value <> 0) then
   herofield[acHands].value += 1
endif
Eval Rule
Phase: Validation/8000

Code:
~if we have no more than three hands of gear equipped, we're good
validif (hero.tagcount[Hero.Hand] <= herofield[acHands].value)

~mark associated tabs as invalid
container.panelvalid[armory] = 0
Timing: Script Name: Check Hands

Lenny Zimmermann
Metairie, LA, USA

Data files authored (please let me know if you see any issues with any of these if you have/use them):
Official (In the downloader)
50 Fathoms, Deadlands: Hell On Earth, Deadlands: Noir, East Texas University, Necessary Evil (requires Super Powers Companion), Pirates of the Spanish Main, Space 1889 (original file by Erich), Tour of Darkness, Weird War II, Weird Wars: Rome
Coming Eventually
Evernight (LWD has completed their review but I have some fixes to make first... although Pinnacle mentioned this might get an overhaul to SWADE so I may just wait for that first. If you just HAVE to have this now, though, just PM me)

Last edited by zarlor; September 3rd, 2013 at 08:03 AM.
zarlor is offline   #1 Reply With Quote
zarlor
Senior Member
 
Join Date: Nov 2010
Location: Metairie, LA, USA
Posts: 1,819

Old January 11th, 2013, 04:40 AM
To create separators and sort gear/weapons in some way other than the defaults you have to have some idea of what the defaults are and where they sort. Individual items will sort themselves, but it depends on what "Type" you select as to how they will group up.

By default equipment/gear will sort itself under the following headings in the following order:

Custom
Adventuring Gear
Clothing
Food
Animals & Tack
Communication
Computers
Surveillance
Ammunition
Medical
Services
Weapon Accessories
Travel
Shelter
Miscellaneous


For weapons the headings and order are as follows:

Medieval Blades
Medieval Axes and Mauls
Medieval Pole Arms
Modern Melee
Futuristic Melee
Medieval Ranged
Black Powder
Modern Pistol
Modern Submachine Gun
Modern Shotgun
Modern Rifle
Modern Assault Rifle
Modern Ranged
Modern Machine Gun
Modern Energy
Futuristic Ranged
Special: Cannons
Special: Rocket Launchers
Special: Missiles
Special: Mines
Special: Flamethrowers
Special: Grenades
Special: Explosives
Vehicle Weapons
Improvised Weapons


Most of those categories have a separator that shows up as grey in the program to act like a separator for the groups that only shows up if there is any equipment set to their type in your user file(s). One thing you will often see in settings that might not use the standard Savage Worlds equipment lists is different headers. The way to get that to happen for your gear for a specific setting/source is to modify (or add) an entry on the Setting Adjust tab and check the "No Standard Gear?" box. This will make most all of the other gear and separators dissapear so you can use your own.

I say "most" because a few separators are not set as "standard gear", namely Food and Clothing. Also Ammunition, but it's also a special case in that it is a separate Tab in the Editor. (If you need to use one of those you'll have to add the Unique ID, eqSepFood for Food or eqSepCloth for Clothing, for example, to the "Preclude" list so it won't show up alongside the separator you create to replace it.)

Let's say we had some weapons we wanted to categorize our own way. All we have to do is commandeer those categories above. Just don't think of them as categories at all, but rather markers for the order that things are in. So if we wanted Hoth Pistols and Hoth Rifles to be a couple of categories, and then Tatooine Pistols and Tatooine Rifles to be two more and we want them to show up in that order, we might commandeer Modern Pistol, Modern Submachine Gun, Modern Shotgun and Modern Rifle to be those categories instead, for example.

So make a new weapon and name it "– Hoth Pistols –" and give it a Unique ID that tells you this is a separator (we usually like to use a 2 Character ID for a particular source, so let's call our Source "House Rules" and give it an ID of "HR"), so let's give this a Unique ID of wpHRSepHPi (the only important part of that is the "wp", the rest is a way to make a Unique ID so I added "HR" to be the 2-character ID we're using using for our setting, "Sep" to denote this as a Separator and "HPi" as shorthand for a Hoth Pistol. In truth you could put anything you want in there, as long as no other Thing used the same Unique ID.) For the "Weapon Type" select "Modern Pistol" from the drop-down list and on the right click the "Show Only?" checkbox. That last part will make sure it stays greyed out and isn't something the player will be able to "buy" as a weapon. Now any new weapons you make that you set to have a "Weapon Type" of "Modern Pistol" will show up in the player's Armory Tab in the Character Profile as being under the "– Hoth Pistols –" section. Do the same for the other types with the names you wanted, so set Hoth Rifles to use Modern Submachine Gun, Tatooine Pistols to use the category of Modern Shotgun and Tatooine Rifles to use Modern Rifle and they'll all show up nice and grouped the way you want them when a player goes to the Armory Tab on their character profile and clicks on "Add New Ranged Weapons".

The same can be done for categorizing armor and shields, but with a few little caveats. First the order for them is:

Medieval Armor
Medieval Shields
Modern Armor
Futuristic Armor
Natural Armor


In this case, however, there is no drop-down list for "Armor Type". Instead you have to go to the "Tags" button and from there you would add a tag for the category you want use for one of the above types. You need to set the Group ID: of this tage to be "ArmorType" (no spaces and capitalization is important.) The "Name" and "Abbreviation" fields should use one of the names in the above list that you will be using. For the Tag ID use the name following the colon below, depending on the category you decide to use:

Medieval Armor: MedArmor
Medieval Shields: MedShield
Modern Armor: ModArmor
Futuristic Armor: FutArmor
Natural Armor: Natural

Finally you can do the same with Vehicles, but they break themselves down into two drop-down lists that sort within each other by Vehicle Type and Vehicle Era. They sort as follows:

Civilian: Ground Vehicles
WWII Military: Ground Vehicles
Modern Military: Ground Vehicles
Futuristic Military: Ground Vehicles
Civilian: Aircraft
WWII Military: Aircraft
Modern Military: Aircraft
Futuristic Military: Aircraft
Civilian: Boats & Ships
WWII Military: Boats & Ships
Modern Military: Boats & Ships
Futuristic Military: Boats & Ships

Of note is that, unlike gear, vehicle tags are actually dynamic, so while the base "Type" by default only has Ground Vehicle, Aircraft, and Boats & Ships you should be able to enter new ones in there as you like, such as Spacecraft and such. I'm not positive where they will fit in the sort order, but playing around should help you figure that out.
-----

When adding Vehicles it's important to note that Bootstrapping a weapon will Bootstrap it to the portfolio the Vehicle is added to. Instead weapons need to be put in as a Gizmo instead. However, first we need to set a little something to prevent an error (you can check the Wiki for details of WHY this needs to be done, but for our purposes let's just say that it needs to be done.)

Containerreg: Initialization/2000 set the Tag Expression: TRUE

Gizmo: Set the Entity Unique Id to: "LoadOut" (without the quotes) and then hit Bootstraps:

Here you can add the weapons. There are also some fields you can set to help out with things like ammo and how they should look on the sheet. For each weapon that needs them go to Fields...

Field Id: livename Value: (The text you want to display, I usually put the text from the book, like "10mm laser (x2), turret", for example)

To set this so it has no weight add another field here:

Field Id: gearWeight Value: 0

And finally if you want to list how much Ammo the weapon has add one more field:

Field Id: wpShots Value: 1000 (or however much ammo/shots that weapon has).
-----

Creatures also have some special fields you can use for them when adding their special abilities. For them you would do a Bootstrap but several "Racial Abilities" have some special fields you can use with them. Specifically the following are of note:

abAquatic
abArmor
abBurrow
abFear
abFlyGener
abSize

For any of these you can set a Field with the a Field: abilValue Value: (whatever it should be). So, for example, if you have a creature than can Burrow at a Pace of 8 then you could Bootstrap abBurrow and for the Field: abilValue you would set Value: 8. These can be negative numbers as well, so abFear might have an abilValue of, say, -2 if you needed. The value should be fairly obvious for each of those things, whether it's for a Pace value or Armor or what have you.

One special one that also falls into this category is abWeapon. For this you have a field to set.

Field Id: livename
Value: (Name of the weapon, such as Claw/Bite, for example, or Bite (AP 10) for AP attacks.)

AND you have a Tags... to set:

Group Id: WeaponDie TagId: (Half Weapon Die type.)

abWeapon assumes this is a Str+Die type of weapon, so a Str+d4 claw attack would have a TagId: 2.

For creatures that have actual weapons and other equipment you might bootstrap there is a further Tag you may want to set on any of the the equipment you add to them.

GroupId: Equipment Tag Id: StartEquip

I don't really now WHY to add that, but it looks like that is how it's commonly handled.
---------------------------------

Many settings don't allow any Arcane Backgrounds or Edges that rely on having an AB. For easy reference here is a list all of all AB related items that you might add to your Preclude tab to fit this requirement:

edgAdept
edgArcMag
edgArcMir
edgArcPsi
edgArcSci
edgArcSup
edgChamp
edgGadget
edgHolyWar
edgMental
edgMrFixIt
edgNewPwr
edgPwrPts
edgPwrSurg
edgRapRch
edgRapRch2
edgSoulDrn
edgWizard
skFaith
skPsionics
skSpellcst

Lenny Zimmermann
Metairie, LA, USA

Data files authored (please let me know if you see any issues with any of these if you have/use them):
Official (In the downloader)
50 Fathoms, Deadlands: Hell On Earth, Deadlands: Noir, East Texas University, Necessary Evil (requires Super Powers Companion), Pirates of the Spanish Main, Space 1889 (original file by Erich), Tour of Darkness, Weird War II, Weird Wars: Rome
Coming Eventually
Evernight (LWD has completed their review but I have some fixes to make first... although Pinnacle mentioned this might get an overhaul to SWADE so I may just wait for that first. If you just HAVE to have this now, though, just PM me)

Last edited by zarlor; July 18th, 2014 at 07:18 AM. Reason: added vehicles
zarlor is offline   #2 Reply With Quote
zarlor
Senior Member
 
Join Date: Nov 2010
Location: Metairie, LA, USA
Posts: 1,819

Old January 11th, 2013, 04:41 AM
To add 4 additional Skill Points:

Eval Script: Setup/8000

Code:
#resmax[resSkill] +=4
-----
To set an Edge to only be usable by a Female character:

Expr-Req
Code:
hero.child[mscPerson].field[perGender].value = 1
For Male set that value to 0.

-----

Some settings use a languages rule that says the character should have 1/2 of their Smarts in languages. This one is essentially already set up, so use an Eval Script in a Setting Adjustment as follows:

Eval Script: Initialization/1000

Code:
perform hero.assign[Hero.SmartsLang]
-----
Some settings allow the character to pick certain higher ranked Edges at character creation. The Born A Hero setting works for this, but it allows for all ranks to be ignored. Here's an example that allows for everything but Legendary Edges to show as valid if they were picked at character creation. To select, say, only Seasoned edge just remove all the other MinRank values other than MinRank.1.

Eval Script: Initialization/200

Code:
foreach thing in Edge where "(MinRank.1 | MinRank.2 | MinRank.3)"
   if (hero.tagis[mode.creation] = 1) then
      var ignoretag as string
      ignoretag = "IgnoreRank." & eachthing.idstring
      perform hero.assignstr[ignoretag] 
   endif
nexteach
This accesses a new feature that CapedCrusader graciously put into place for us where this "IgnoreRank." mechanic will allow a specific Edge to show as valid even if the character does not otherwise meet the Rank Requirements.

Next we need to make sure the Edge remains valid once we go into Advancement mode.

Eval Script: Validation/100

Code:
foreach pick in hero from Edge where "(MinRank.1 | MinRank.2 | MinRank.3)"
   if (eachpick.creation = 1) then
      perform eachpick.assign[Helper.IgnoreRank]
   endif
nexteach
-----
For adding a bonus to a trait based on Rank.

Eval Script: Pre-Traits/5000

Code:
var bonus as number
bonus = herofield[acRank].value + 1
perform #traitadjust[trCommand,+,bonus,"Valhalla Graduate"]
CapedCrusader has noted of this: "For NPC's though, since we don't know what Rank they are until everything is bought, and it can change every time something on the character changes, it has to be populated much later. So, be aware that using the acRank value can be somewhat unpredictable with NPC's."

-----
A thorny one that Erich brought up dealing with how to use the mechanic used by the Racial Property "Very Costly Atribute", but in this case trying to do it for all Knowledge skills. Knowledge skill are rather special since they are not Unique, you can have multiples of the. CapedCrusaader came through with the following code:

Eval Script: Effects/1000

Code:
foreach pick in hero from Advance where "Skill.skKnow"
  eachpick.field[advCost].value *= 2
nexteach
Eval Script: Traits/5000 Index: 2

Code:
foreach pick in hero where "Skill.skKnow"
   perform #resspent[resSkill,+,eachpick.field[trtUser].value - 1,"Hindrance Name"]
   var modifier as number
   modifier = maximum(eachpick.field[trtUser].value - eachpick.linkage[attribute].field[trtFinal].value,0)
   perform #resspent[resSkill,+,modifier,"Hindrance Name"]
nexteach
-----
To make the effects of an Edge or Hindrance show up as selectable (under the "Activated Abilities" section) on the In-Play tab check the "Activated by User?" cehckbox and enclose your code like the following:

Code:
if (field[abilActive].value <> 0) then
   herofield[acIgnWound].value += 1
endif
In this case we're using "Liquid Courage" as an example so just replace that "herofield[acIgnWound].value += 1" with the code you need for the activated ability.

-----
CapedCrusader worked out the following code for me to apply a +1 bonus to damage for all Melee attacks on a character coming from a specific Edge. This is an example of stepping through just one set of things, in this case Melee Weapons, and applying to something just to those.

Pre-Traits/5000
Code:
foreach pick in hero from WeapMelee
   eachpick.field[wpDmgBonus].value += 1
nexteach
perform hero.child[wpUnarmed].setfocus
   focus.field[wpDmgBonus].value += 1
-----
This one is an example of narrowing down to a specific set of things (like above) but then checking for and changing a further subset of those things, in this case we're going to step through Ranged Weapons, then we'll look for the ones that have the tag for a Thrown weapon and then set what the range value is for those weapons, as taken from the Mighty Throw Edge from Weird Wars: Rome:

At Pre-Traits/5000
Code:
foreach pick in hero from WeapRange
   if (eachpick.tagis[Weapon.Thrown] <> 0) then
      eachpick.field[wpShort].value = 4
      eachpick.field[wpMedium].value = 8
      eachpick.field[wpLong].value = 16
   endif
nexteach
-----
Gumbytie gave us the following for linking an existing skill to a different Attribute. In this example it's changing Fighting to work off of Smarts instead of Agility as the linked stat:

Put this at Setup/1000:
Code:
perform hero.childfound[skFighting].setlinkage[attribute,Attribute,"thingid.attrSma"]
-----
From SeelyOne in response to dartnet's request for a way to give a bonus to all Skills that are Smarts-based

Pre-Traits/5000 before Calc trtFinal

Code:
foreach pick in hero from Skill where "Attribute.attrSma"
  eachpick.field[trtRoll].value += 1
nexteach

Lenny Zimmermann
Metairie, LA, USA

Data files authored (please let me know if you see any issues with any of these if you have/use them):
Official (In the downloader)
50 Fathoms, Deadlands: Hell On Earth, Deadlands: Noir, East Texas University, Necessary Evil (requires Super Powers Companion), Pirates of the Spanish Main, Space 1889 (original file by Erich), Tour of Darkness, Weird War II, Weird Wars: Rome
Coming Eventually
Evernight (LWD has completed their review but I have some fixes to make first... although Pinnacle mentioned this might get an overhaul to SWADE so I may just wait for that first. If you just HAVE to have this now, though, just PM me)

Last edited by zarlor; November 26th, 2014 at 10:35 AM.
zarlor is offline   #3 Reply With Quote
zarlor
Senior Member
 
Join Date: Nov 2010
Location: Metairie, LA, USA
Posts: 1,819

Old February 4th, 2013, 06:02 AM
If anyone has more, anything I missed, or just corrections to the above, please let me know. I would certainly appreciate the feedback.

Lenny Zimmermann
Metairie, LA, USA

Data files authored (please let me know if you see any issues with any of these if you have/use them):
Official (In the downloader)
50 Fathoms, Deadlands: Hell On Earth, Deadlands: Noir, East Texas University, Necessary Evil (requires Super Powers Companion), Pirates of the Spanish Main, Space 1889 (original file by Erich), Tour of Darkness, Weird War II, Weird Wars: Rome
Coming Eventually
Evernight (LWD has completed their review but I have some fixes to make first... although Pinnacle mentioned this might get an overhaul to SWADE so I may just wait for that first. If you just HAVE to have this now, though, just PM me)

Last edited by zarlor; February 7th, 2013 at 04:50 AM.
zarlor is offline   #4 Reply With Quote
Erich
Senior Member
 
Join Date: Aug 2011
Posts: 131

Old February 4th, 2013, 07:45 AM
Please sticky this.

-Erich
Erich is offline   #5 Reply With Quote
jbearwillis
Senior Member
 
Join Date: Dec 2009
Location: Independence, Mo
Posts: 797

Old February 4th, 2013, 07:42 PM
Hey CapeCrusader is there a way to sticky this Post so people can always find it.

Last edited by jbearwillis; February 26th, 2013 at 10:41 PM. Reason: LOL Corrected my spelling
jbearwillis is offline   #6 Reply With Quote
SeeleyOne
Senior Member
 
Join Date: Nov 2009
Posts: 891

Old February 3rd, 2014, 05:30 PM
There is a way to change the XP table. The example here changes it to 25 XP per Rank.

Make a new Mechanic in the Editor, just add it to your user file. You can also link it to a particular source if you only want to use it in certain campaigns or settings.

Phase: Final
Priority: 5010

Eval Script:
Code:
 
    var xp as number
    var xpperrank as number
    xpperrank = 25
    xp = hero.child[resXP].field[resMax].value
 
    if (xp < xpperrank * 4) then
      herofield[acRank].value = round(xp / xpperrank,0,-1)
    else
      herofield[acRank].value = 4
      endif
The first part only changes the XP table. It does not change the Advancements after 80 XP (which slows down to one per 10 XP instead of per 5 XP). So just add a second Eval script to the mechanic so that it will be nice and do it for us. This will not calculate when making an NPC and it telling us how much XP it has. Who uses that anyway? :P

Phase: Setup
Priority: 2010
Code:
     var xp as number
    xp = hero.child[resXP].field[resMax].value
    if (xp >= 85) then
      #resmax[resAdvance] +=1
      endif
     if (xp >= 95) then
      #resmax[resAdvance] +=1
    endif
I have found that the above code gets angry when you import a creature or stock character. The reason is that they do not have the resAdvance value. I have changed the code to the following:

Code:
if (herofield[acCharType].value = -1) then
    var xp as number
    xp = hero.child[resXP].field[resMax].value
    if (xp >= 85) then
      #resmax[resAdvance] +=1
      endif

    if (xp >= 95) then
      #resmax[resAdvance] +=1
    endif
endif

Evil wins because good rolls poorly .... or the players are not paying enough attention to the game.

Last edited by SeeleyOne; April 3rd, 2014 at 07:18 PM. Reason: Modified code to make imported stocks happy.
SeeleyOne is offline   #7 Reply With Quote
SeeleyOne
Senior Member
 
Join Date: Nov 2009
Posts: 891

Old February 15th, 2014, 10:34 PM
Sometimes you might want an edge to not appear on the print-out after you obtain a superior version of it. For example, it does not need to say both Attractive and Very Attractive.

While the timing below might not be 100% necessary, I found that after some playing around that it does have an effect on it. When I tried it in other phases it would not work. So you are welcome to figure out its nuances if you want to (and if you do not, just use what I show)

Eval Script
Phase: Pre-Traits
Priority: 5000

Code
Code:
 if (hero.tagis[Edge.edgWhatever] = 1) then
      perform this.assign[Print.NoPrint]
endif
I was not able to find examples of how to make an edge refer to itself. Or anything else for that matter (unless you count picks), when looking over the source files. However, I have learned to use the "this" when programming in other programming languages so I decided to give it a try.

Evil wins because good rolls poorly .... or the players are not paying enough attention to the game.

Last edited by SeeleyOne; February 15th, 2014 at 10:38 PM. Reason: Played a bit more with the timing.
SeeleyOne is offline   #8 Reply With Quote
SeeleyOne
Senior Member
 
Join Date: Nov 2009
Posts: 891

Old May 28th, 2014, 07:20 PM
Some settings or house rules have a Skill Rating maximum that is dependent upon the character's Rank. This can be done by making a mechanic that has a Source that has the given setting/house rule set checked.

The example below makes it so that a Novice can only get d8 in a skill rating. It increases to d10 at Seasoned. It increases to d12 at Veteran.

Pre-Traits 5000
Code:
    var xp as number
    var skillMax as number
    xp = hero.child[resXP].field[resMax].value
    skillMax = 4

~Determine the skillMax bonus by XP value.

    if (xp >= 20) then
      skillMax +=1
    endif

    if (xp >= 40) then
      skillMax +=1
    endif

~Apply the skillMax to each skill.
foreach pick in hero from Skill
    eachpick.field[trtMaximum].value = skillMax
nexteach

Evil wins because good rolls poorly .... or the players are not paying enough attention to the game.
SeeleyOne is offline   #9 Reply With Quote
Paragon
Senior Member
 
Join Date: Feb 2010
Posts: 874

Old August 15th, 2014, 07:50 AM
At the suggestion of the estimable Zarlor, I thought I'd note this one:

Pre-Traits/5000
Code:
Code:
foreach pick in hero from WeapRange
if (eachpick.tagis[WeaponType.ModPistol] <> 0) then
eachpick.field[wpDmgBonus].value += 2
endif
nexteach
This was a bit of code on the Gunslinger Edge for my XCOM SW game, that allowed all modern pistols to do +2 damage in the Sniper's hands. It was put together by kitbashing together a couple of bits of code, one from Caped Crusader and one from (I'm guessing) Zarlor.

A couple of things to be aware of, though:

1. Damage bonuses are listed directly with the damage value, so if you have a pistol with something like, say, 2D6-1, this will produce a result that says 2D6-1+2. That actually gets you the correct result, but its a little--odd. As Zarlor says, if you want to fix that, you could do it by copying the problematic weapons, precluding the old ones, then moving the -1 into the damage bonus field.

2. You need to be aware of what types there are, and potentially do a more complicated code (Zarlor suggested:

Code:
foreach pick in hero from WeapRange
   if (eachpick.tagis[WeaponType.ModPistol] | eachpick.tagis[WeaponType.FutPistol] <> 0) then
      eachpick.field[wpDmgBonus].value += 2
   endif
nexteach
should be structured right) it you have more than one type you're trying to apply the modifier to. In addition, it may be necessary to change types on some things (if I wanted to apply it to the by the book Laser Pistol I'd need to copy-edit-preclude process, as its not actually tagged as a pistol of any sort, just an energy weapon).

Last edited by Paragon; April 24th, 2017 at 07:25 AM.
Paragon 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: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.