DICE PACKS BUNDLE
Page 1 of 5 123 ... Last
  1. #1
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384

    Setting Extension idea

    I started "playing" with the Savage Worlds ruleset yesterday and the first thing that I had in mind was capability to add additional devired stats into the character sheet. The core code was not flexible enough to allow that easily (without adding several lines of code, scripts and logic). This made me think if derived stats and attributes could be revised to have more flexible way to configure them.

    I made this small extension that revised how attributes and derived stats work in the ruleset: They can be configured in one simple file and you can actually make your own extension of that configuration file and apply it to have different sets of attributes and derived stats. I attached the extension itself (which I call unofficial revision) and an example setting extension that changes the attributes and derived stats to something different.

    from the SavageWorlds_examplesetting.ext archieve you can find following file: scripts/customized_properties.lua and inside it there is simple configuration such as:

    Code:
    attributes = { 
    	{ ["nodename"] = "agility",
    	  ["name"] = "Dexterity", 
    	  ["short"] = "Dex"
    	},
    	{ ["nodename"] = "smarts",
    	  ["name"] = "Reasoning", 
    	  ["short"] = "Rea"
    	},
    	{ ["nodename"] = "spirit",
    	  ["name"] = "Willpower", 
    	  ["short"] = "Wil"
    	},
    	{ ["nodename"] = "strength",
    	  ["name"] = "Strength", 
    	  ["short"] = "Str"
    	},
    	{ ["nodename"] = "vigor",
    	  ["name"] = "Constitution", 
    	  ["short"] = "Con"
    	}
    }
    
    derivedstats = { 
    	{ ["name"] = "Pace", 
    	  ["base"] = "8"
    	},
    	{ ["name"] = "Parry", 
    	  ["base"] = "fighting/2+2"
    	},
    	{ ["name"] = "Toughness", 
    	  ["base"] = "vigor/2+2"
    	},
    	{ ["name"] = "Dodge", 
    	  ["base"] = "dexterity"
    	},
    	{ ["name"] = "Muscle", 
    	  ["base"] = "(Constitution+Strength)/2+2"
    	}
    }
    In that file you can setup your attributes and derived stats. For attributes you can setup any number of attributes (however the charactersheet is only capable to display 5 of them at the moment) and give them name and shortnames, which can be referenced laterwards. For derived stats you can set any number of them (but the charactersheet can only display five of them at the moment) and give them a name and a formula how their base value is calculated.

    However this is still experimental extension idea and lack few things like, it does only affect PC charactersheet and not for example NPC sheets and combat tracker (yet). There is also one minor bug where your fresh created skill doesn't affect your derived stats unless you close/reopen your character sheet. In the future there is also menace of changing the datasource names due to different structure in fixed entries and lists etc plaah... which means that it won't be fully compatable with earlier created campaigns (you might lose derived stat and attribute information, be careful).

    Anyways, I would like to hear some comments and improvement ideas anyhow related to this idea because I am not so familiar with Savage Worlds (especially with all those different fancy settings) and it would really help me to understand what should and should not be done with this kind of idea.

    PS: The image attached shows what you get if you enable both extensions.
    Last edited by Ikael; January 31st, 2013 at 08:54.
    "Alright, you primitive screwheads, listen up: THIS... is my BOOMSTICK!" -- Ash Williams, Army of Darkness

    Post your SavageWorlds ruleset feature requests and issue reports here!

  2. #2
    VenomousFiligree's Avatar
    Join Date
    Sep 2006
    Location
    Plymouth, UK.
    Posts
    2,122
    Look forward to getting home tomorrow and trying it out.

    Previously: MurghBpurn

  3. #3
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384

    Update

    Just finnished the 2nd version of the extension. Currently attributes and derived stats can be declared for evyerbody, including PCs, NPCs and they work in the Combattracker too. In addition character sheet's main page scales and is able to display more than 5 attributes and derived stats if declared. Here is a list what core classes this extension affects:

    - charsheet_main
    - charsheet_mini
    - npc_combat
    - combattracker_entry
    - minitracker

    Backward compatability is not supported in this version but it's possible to implement such a automated converter but it's on the very low priority at the moment.

    Next possible update could contain ability to configure wounds such as you could add new wound types (like sanity/madness in cthulhu setting) and set up how many hits PCs could take before getting inc. (I am not sure about this one, but maybe in some other setting you can endure more than 3 wounds, no?). Any thoughts, ideas or suggestions about this extension?
    Last edited by Ikael; September 8th, 2010 at 21:51.
    "Alright, you primitive screwheads, listen up: THIS... is my BOOMSTICK!" -- Ash Williams, Army of Darkness

    Post your SavageWorlds ruleset feature requests and issue reports here!

  4. #4
    VenomousFiligree's Avatar
    Join Date
    Sep 2006
    Location
    Plymouth, UK.
    Posts
    2,122
    Wow good stuff! Makes my RoC extension obsolete! In Savage Suzerain you have 3 fatigue, not heard of anymore than 4 wounds though.

    Previously: MurghBpurn

  5. #5
    Doswelk's Avatar
    Join Date
    Jul 2005
    Location
    Surrey, UK
    Posts
    2,681
    NPCs Don't work for me, however I do not use the Standard SW Ruleset though I really should these days (I have a Dev version with loads of extra "features").

    Is SavageWorldsInstaller-3.0.8.msi the latest official version?

    WIth the quality of the unofficial patches and the new extensions being added I want to go back to the official version.
    My players just defeated an army, had a dogfight with aliens, machine-gunned the zombies, stormed the tower, became Legendary and died heroically

    Yours are still on combat round 6

    Get Savage
    Ultimate License Holder.
    First GM to post a game for the original FG Con!

  6. #6
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384
    I use SavageWorldsInstaller-3.0.8.msi as base but I have also included some of the latest patches to the extension (including npc sheet). How is you NPC sheet not working or maybe how should it work?

    EDIT: I did notice that there is something wicked going on with the bare extension, combattracker and npc sheet is not working like it should be. Probably I am just missing some dependiencies to base classes.
    Last edited by Ikael; September 8th, 2010 at 21:35.
    "Alright, you primitive screwheads, listen up: THIS... is my BOOMSTICK!" -- Ash Williams, Army of Darkness

    Post your SavageWorlds ruleset feature requests and issue reports here!

  7. #7
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384
    The extension attached earlier had old codes included into it, that's why NPC and combat tracker didn't work properly. Now I tested this newly attached extension with the BARE version of SW (not with the version which was used to develope the extension itself) and it worked fine after I reassemled the extension's content.

    Thank you Doswelk for letting me know about this! Developer is always blind behind his back
    Last edited by Ikael; September 9th, 2010 at 11:06.
    "Alright, you primitive screwheads, listen up: THIS... is my BOOMSTICK!" -- Ash Williams, Army of Darkness

    Post your SavageWorlds ruleset feature requests and issue reports here!

  8. #8
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384

    Update version 3

    Updated the extension to version 3. This new update includes possibility to configure damanges, ie what kind of damage types there is and how many hits character can endure each. Current configuration file is presented below. nodename property means to what node the value will be stored in db.xml, name is how the property is displayed in the sheets and short is just a shorthand version of the full name. For derived stats base property is how the base value is calculated and this property may consist any declared attribute or skill from your character sheet and some mathematcal expression such as ()'s +,-, / and * to calculate the value. combat property is for determining if given item is combat oriented or not (this will determine where the item is displayed on sheets). For damages/tolerance max property is how many hits PCs can take, penalties is how much much penalties PC get from each hit, penaltydescription is the description of the damage itself and combattracker property declared which damage type is displayed on the combat tracker. Note that only one will be displayed in the combat tracker and it will be the first item with this property set to true.

    Code:
    -- Attributes
    attributes = { 
    	{ ["nodename"] = "agility",
    	  ["name"] = "Agility", 
    	  ["short"] = "Agi"
    	},
    	{ ["nodename"] = "smarts",
    	  ["name"] = "Smarts", 
    	  ["short"] = "Sma"
    	},
    	{ ["nodename"] = "spirit",
    	  ["name"] = "Spirit", 
    	  ["short"] = "Spi"
    	},
    	{ ["nodename"] = "strength",
    	  ["name"] = "Strength", 
    	  ["short"] = "Str"
    	},
    	{ ["nodename"] = "vigor",
    	  ["name"] = "Vigor", 
    	  ["short"] = "Vig"
    	}
    }
    
    -- Derivated Stats
    derivedstats = { 
    	{ ["nodename"] = "pace", 
    	  ["name"] = "Pace",
    	  ["short"] = "Pace",
    	  ["base"] = "6",
    	  ["combat"] = true
    	},
    	{ ["nodename"] = "parry",
    	  ["name"] = "Parry", 
    	  ["short"] = "Parry",
    	  ["base"] = "fighting/2+2",
    	  ["combat"] = true
    	},
    	{ ["nodename"] = "toughness",
    	  ["name"] = "Toughness", 
    	  ["short"] = "Tough",
    	  ["base"] = "vigor/2+2",
    	  ["combat"] = true
    	},
    	{ ["nodename"] = "charisma",
    	  ["name"] = "Charisma", 
    	  ["short"] = "Cha",
    	  ["base"] = "0",
    	  ["combat"] = false
    	}
    }
    
    -- NPCs additional Derivated Stats
    npc_additional_derivedstats = { 
    	{ ["nodename"] = "armor", 
    	  ["name"] = "Armor",
    	  ["short"] = "(Armor)",
    	  ["combat"] = true
    	}
    }
    
    -- Tolerance
    tolerance = { 
    	{ ["nodename"] = "wounds",
    	  ["name"] = "Wounds", 
    	  ["max"] = 3,
    	  ["penalties"] = {-1, -2, -3},
    	  ["penaltydescription"] = "Wound Penalty",
    	  ["combat"] = true,
    	  ["combattracker"] = true,
    	},
    	{ ["nodename"] = "fatique",
    	  ["name"] = "Fatique", 
    	  ["max"] = 2,
    	  ["penalties"] = {-1, -2},
    	  ["penaltydescription"] = "Fatigue Penalty",
    	  ["combat"] = true,
    	  ["combattracker"] = false
    	}
    }
    Last edited by Ikael; September 9th, 2010 at 14:11.
    "Alright, you primitive screwheads, listen up: THIS... is my BOOMSTICK!" -- Ash Williams, Army of Darkness

    Post your SavageWorlds ruleset feature requests and issue reports here!

  9. #9
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384

    Update 3.1

    The development goes on really rapid rate with this extension. Version 3.1 attached here and it includes minor updates to core functionality that were discussed above. In addition I added exclusiongroup-tag to the setting extension that only one setting extension can be applied. Plus I made second example setting extension: Realm of Cthulhu (as it's the only setting that I know little bit). The image tell more than thousand gibberish words.
    "Alright, you primitive screwheads, listen up: THIS... is my BOOMSTICK!" -- Ash Williams, Army of Darkness

    Post your SavageWorlds ruleset feature requests and issue reports here!

  10. #10
    Doswelk's Avatar
    Join Date
    Jul 2005
    Location
    Surrey, UK
    Posts
    2,681
    Okay what have I done wrong?

    I get a console error: Script Error: [string "scripts/charsheet_tolerancelist.lua"]:5: bad arguement #1 to 'pairs' (table expected, got nil)

    Below is my properties_customized.lua
    Code:
    -- Attributes
    attributes = { 
        { ["nodename"] = "agility",
          ["name"] = "Agility", 
          ["short"] = "Agi"
        },
        { ["nodename"] = "smarts",
          ["name"] = "Smarts", 
          ["short"] = "Sma"
        },
        { ["nodename"] = "spirit",
          ["name"] = "Spirit", 
          ["short"] = "Spi"
        },
        { ["nodename"] = "strength",
          ["name"] = "Strength", 
          ["short"] = "Str"
        },
        { ["nodename"] = "vigor",
          ["name"] = "Vigor", 
          ["short"] = "Vig"
        },
        { ["nodename"] = "wealth",
          ["name"] = "Wealth",
          ["short"] = "$"
        }
    }
    
    -- Derivated Stats
    derivedstats = { 
        { ["nodename"] = "pace", 
          ["name"] = "Pace",
          ["short"] = "Pace",
          ["base"] = "6",
          ["combat"] = true
        },
        { ["nodename"] = "parry",
          ["name"] = "Parry", 
          ["short"] = "Parry",
          ["base"] = "fighting/2+2",
          ["combat"] = true
        },
        { ["nodename"] = "toughness",
          ["name"] = "Toughness", 
          ["short"] = "Tough",
          ["base"] = "vigor/2+2",
          ["combat"] = true
        },
        { ["nodename"] = "charisma",
          ["name"] = "Charisma", 
          ["short"] = "Cha",
          ["base"] = "0",
          ["combat"] = false
        },
        { ["nodename"] = "sanity",
          ["name"] = "Sanity", 
          ["short"] = "San",
          ["base"] = "spirit/2+2",
          ["combat"] = true
        },
        { ["nodename"] = "languages",
          ["name"] = "Languages", 
          ["short"] = "lang",
          ["base"] = "smarts/2",
          ["combat"] = false
        }
    }
    My players just defeated an army, had a dogfight with aliens, machine-gunned the zombies, stormed the tower, became Legendary and died heroically

    Yours are still on combat round 6

    Get Savage
    Ultimate License Holder.
    First GM to post a game for the original FG Con!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
FG Spreadshirt Swag

Log in

Log in