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

    SWEL: Module Checker

    Savage Worlds Enhanced Library (SWEL) is community extension that provides several features creating and validating modules.
    This introduction is about the validation part. It's recommended for all Savage Worlds content developers to validate your
    product/conversion with the SWEL tool to identify possible issues in your work.


    SWEL module checker is able to identify and report issues regarding links and record data in the module.

    Installation
    • Download the SWEL extension (SW Enhanced Library_vX_Y.ext) from Fantasy Grounds forums (direct link to the thread)
    • Put the .ext file into your Fantasy Grounds Application Data's extensions folder
    • Remove any previous/older version from the folder, you can identify the version from extension's file name
    • When you next time start Fantasy Grounds application you should find "SW Enhanced Library" entry in the FG's extensions list in launcher view; enable the extension
    • After campaign is loaded you can check that the extension is enabled by using /version command in chat; you should see the extension listed in extensions section

    Usage, basics
    • Launch Savage Worlds campaign with SWEL extension
    • Open "Options" view
      • From "Enhanced Library" category set suitable check level in "Module Checker: Data" and "Module Checker: Links" options. By default these are on, but you can set each to either strict mode or to off. Strict mode will reveal all possible issue findings, which might be just unnecessary data but would not break anything

    • Open "Data Module Activation" view
      • Load module that you want to check and right click on it and select "Check Module"

    • You will get issue report in two ways:
      • Printed directly to chat
      • Text based report is wrote to your clipboard memory. To see the text based report, after module check is performed open your favorite text editor and in the text input area select "Paste" (or use CTRL+v)


    Report output, basics
    Report contains following information:
    • General information about the module
      • Name of the module
      • How many databasenodes it contains
      • How many of the database nodes are without actual value (could be removed to save disk space)

    • To which other modules your module is dependent (you have linked content that points to other module's data)
    • What windowclass definitions are used in your module
    • Link issues
      • Broken and suspicious link definitions, see further posts below

    • Data issues
      • Skills, Edges, Hindrances, Abilities, Gear and NPC attack & power data related issues, see further posts below


    Tips & hints
    • If you get link issues and your module is dependent on other modules, make sure to load all dependent modules and re-run the check! Unloaded dependent module links are identified as broken!
    • You can perform module check from Library view as well; right click any loaded module from Library view and select "Check Module"
    • You can perform multiple module checking with slashcommand: /modules check
      • The command will check all currently loaded module
      • Issue report is only written into your clipboard memory; in chat you will only see note when the check is finished
      • Warning: if you use strict data checking level, be sure not to check too many modules at once or FG might run out of memory; in that case close and restart FG

    Attached Images Attached Images
    Last edited by Ikael; December 20th, 2017 at 21:27.

  2. #2
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384
    Link issues
    Detailed information about the link issue report

    Link [Node: XXX]: No [class] defined
    The link does not contain windowclass definition and is a broken link
    • XXX marks the database path of the broken link in your module


    Link [Node: XXX]: No [recordname] defined
    The link does not contain recordname definition and is a broken link
    • XXX marks the database path of the broken link in your module


    Link [Node: XXX]: No content [Recordname: YYY]
    The link points to either non-existent or empty content. You need to update the link definitions. This issue might raise if checked module is linked to use other module which is not loaded in. Load all required modules and re-run the check!
    • XXX marks the database path of the broken link in your module
    • YYY marks the recordname that is used in the link

    Link [Node: XXX]: Deprecated class [ZZZ]
    The link is defined to have windowclass which is deprecated and should be replaced with new version.

    • XXX marks the database path of the link in your module
    • ZZZ is the deprecated windowclass defined in the link
      • In case of "mundaneitem" you should replace it with "item"
      • In case of "localreference" you should replace it with the most suitable one: "sw_referenceskill" (Skills) or "sw_referencefeat" (Edges, Hindrances and Special abilities)


    Link [Node: XXX]: Suspicious class [ZZZ]
    The link is defined to have windowclass which does not exist and should be replaced with actual existing windowclass

    • XXX marks the database path of the suspicious link in your module
    • ZZZ is the windowclass defined in the link


    Record table source [Node: XXX]: No value
    You have malformed reference_categorisedlist windowclass in you module. It either lacks source definition or it is empty
    • XXX marks the database path of the reference_categorisedlist definition in your module

    To fix the issue, make sure that <source type="string">ZZZ</source> exists in the definition, where
    • ZZZ is the database path to record items


    Record table source [Node: XXX]: No content [Recordname: YYY]
    You have malformed reference_categorisedlist windowclass in you module. The source value points to database path which has no content

    • XXX marks the database path of the reference_categorisedlist definition in your module
    • YYY marks the recordname that is used in the source

    To fix the issue, make sure that source definition points to existing database path

    Record table source [Node: XXX]: Records could not be checked
    You have malformed reference_categorisedlist windowclass in you module. Because of the source issue, list's records could not be checked properly

    • XXX marks the database path of the reference_categorisedlist definition in your module
    Last edited by Ikael; December 20th, 2017 at 22:36.
    "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!

  3. #3
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384
    Data issues, part 1
    Detailed information about the data issue report

    Attacks

    [YYY][ZZZ] Attack [Node: XXX]: No [traitype] defined
    NPC's attack does not have required traittype definition.
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <traittype type="string">AAA</traittype> definition to attack
    • AAA is string representation of the trait type; one of the following:
      • Melee
      • Ranged
      • Thrown
      • Arcane
      • Bomb
      • Attack that is not associated to any trait type should have <traittype type="string"/> information



    [YYY][ZZZ] Attack [Node: XXX]: No [armorpiercing] defined
    NPC's attack does not have required armor piercing information although it is mentioned in notes

    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <armorpiercing type="number">AAA</armorpiercing> definition to attack
    • AAA is numeric armor piercing value


    [YYY][ZZZ] Attack [Node: XXX]: No [damage] defined
    NPC's attack does not have required string representation of damage information although damage dices are set
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <damage type="string">AAA</damage> definition to attack
    • AAA is string representation of the damage, such as Str+d6



    [YYY][ZZZ] Attack [Node: XXX]: No [range] defined
    NPC's attack does not have required range information although it is mentioned in notes
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <range type="string">AAA</range> definition to attack
    • AAA is string representation of the range, such as 10/20/40


    [YYY][ZZZ] Attack [Node: XXX]: No [rof] defined
    NPC's attack does not have required rate of fire information although it is mentioned in notes
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <rof type="string">AAA</rof> definition to attack
    • AAA is string representation of the rate of fire


    [YYY][ZZZ] Attack [Node: XXX]: No [reach] defined
    NPC's attack does not have required reach information although it is mentioned in notes
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <reach type="number">AAA</reach> definition to attack
    • AAA is numeric representation of the reach


    [YYY][ZZZ] Attack [Node: XXX]: Deprecated data [type], Use [traittype] instead
    NPC's attack has deprecated type information which should be replaced with traittype
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, replace <type type="number"> information with corresponding <traittype type="string">AAA</traittype>
    • type=0 should be replaced with <traittype type="string">Melee</traittype>
    • type=1 should be replaced with <traittype type="string">Ranged</traittype>
    • type=3 should be replaced with <traittype type="string">Thrown</traittype>


    [YYY][ZZZ] Attack [Node: XXX]: Deprecated data [weaponnotes], Use [notes] instead
    NPC's attack has deprecated weaponnotes information which should be replaced with notes
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, replace <weaponnotes type="string"> information with <notes type="string">

    [YYY][ZZZ] Attack [Node: XXX]: Deprecated data [wpweight], Use [weight] instead
    NPC's attack has deprecated wpweight information which should be replaced with weight
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, replace <wpweight type="number"> information with <weight type="number">

    [YYY][ZZZ] Attack [Node: XXX]: Deprecated data [type], Remove it
    NPC's attack has deprecated information that can be removed. Remove <type type="number"> information
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name


    [YYY][ZZZ] Attack [Node: XXX]: Deprecated data [weaponnotes], Remove it
    NPC's attack has deprecated information that can be removed. Remove <weaponnotes type="string"> information
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name


    [YYY][ZZZ] Attack [Node: XXX]: Deprecated data [wpweight]. Remove it
    NPC's attack has deprecated information that can be removed. Remove <wpweight type="number"> information
    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name


    [YYY][ZZZ] Attack [Node: XXX]: No [name] defined
    NPC's attack does not have required name information

    • XXX marks the attack's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC attack's name

    To fix the issue, add <name type="string">AAA</name> definition to attack
    • AAA is attack's name


    Powers

    [YYY][ZZZ] Power [Node: XXX]: No [traitype] defined
    NPC's power does not have required traittype definition.
    • XXX marks the power's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC power's name

    To fix the issue, add <traittype type="string">Arcane</traittype> definition to power
    [YYY][ZZZ] Power [Node: XXX]: No [damage] defined
    NPC's power does not have required string representation of damage information although damage dices are set
    • XXX marks the power's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC power's name

    To fix the issue, add <damage type="string">AAA</damage> definition to power
    • AAA is string representation of the damage, such as Str+d6


    [YYY][ZZZ] Power [Node: XXX]: Deprecated data [type], Use [traittype] instead
    NPC's power has deprecated type information which should be replaced with traittype
    • XXX marks the power's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC power's name

    To fix the issue, replace <type type="number"> information with corresponding <traittype type="string">AAA</traittype>
    • type=0 should be replaced with <traittype type="string">Melee</traittype>
    • type=1 should be replaced with <traittype type="string">Ranged</traittype>
    • type=3 should be replaced with <traittype type="string">Thrown</traittype>


    [YYY][ZZZ] Power [Node: XXX]: Deprecated data [type], Remove it
    NPC's power has deprecated information that can be removed. Remove <type type="number"> information
    • XXX marks the power's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC power's name


    [YYY][ZZZ] Power [Node: XXX]: No [name] defined
    NPC's power does not have required name information

    • XXX marks the power's databasenode path in your module
    • YYY is NPC's name
    • ZZZ is NPC power's name

    To fix the issue, add <name type="string">AAA</name> definition to power
    • AAA is power's name
    Last edited by Ikael; December 20th, 2017 at 22:30.
    "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
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384
    Data issues, part 2
    Detailed information about the data issue report

    Skills

    [YYY][ZZZ] Skill [Node: XXX]: Deprecated data [skillname], Use [name] instead
    Skill has deprecated skillname information which should be replaced with name

    • XXX marks the skill's databasenode path in your module
    • YYY is skill owner's name
    • ZZZ is skill's name

    To fix the issue, replace <skillname type="string"> information with <name type="string">

    [YYY][ZZZ] Skill [Node: XXX]: Deprecated data [skillname], Remove it
    Skill has deprecated information that can be removed. Remove <skillname type="name"> information

    • XXX marks the skill's databasenode path in your module
    • YYY is skill owner's name
    • ZZZ is skill's name


    [YYY][ZZZ] Skill [Node: XXX]: No [name] defined
    Skill does not have required name information

    • XXX marks the skill's databasenode path in your module
    • YYY is skill owner's name
    • ZZZ is skill's name

    To fix the issue, add <name type="string">AAA</name> definition to skill

    • AAA is skill's name


    Abilities (Edges, Hindrances, Special Abilities)

    [YYY][ZZZ] Ability [Node: XXX]: Deprecated data [abilityname], Use [name] instead
    Ability has deprecated abilityname information which should be replaced with name
    • XXX marks the ability's databasenode path in your module
    • YYY is ability owner's name
    • ZZZ is ability's name

    To fix the issue, replace <abilityname type="string"> information with <name type="string">

    [YYY][ZZZ] Ability [Node: XXX]: Deprecated data [abilitydescription], Use [description] instead
    Ability has deprecated abilitydescription information which should be replaced with name
    • XXX marks the ability's databasenode path in your module
    • YYY is ability owner's name
    • ZZZ is ability's name

    To fix the issue, replace <abilitydescription type="string"> information with <description type="string">

    [YYY][ZZZ] Ability [Node: XXX]: Deprecated data [abilityname], Remove it
    Ability has deprecated information that can be removed. Remove <abilityname type="name"> information
    • XXX marks the ability's databasenode path in your module
    • YYY is ability owner's name
    • ZZZ is ability's name


    [YYY][ZZZ] Ability [Node: XXX]: Deprecated data [abilitydescription], Remove it
    Ability has deprecated information that can be removed. Remove <abilitydescription type="name"> information
    • XXX marks the ability's databasenode path in your module
    • YYY is ability owner's name
    • ZZZ is ability's name


    [YYY][ZZZ] Ability [Node: XXX]: No [name] defined

    Ability does not have required name information
    • XXX marks the ability's databasenode path in your module
    • YYY is ability owner's name
    • ZZZ is ability's name

    To fix the issue, add <name type="string">AAA</name> definition to ability
    • AAA is ability's name
    Last edited by Ikael; December 20th, 2017 at 22:34.
    "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!

  5. #5
    Ikael's Avatar
    Join Date
    Jan 2008
    Location
    Finland/Joensuu
    Posts
    2,384
    Data issues, part 3
    Detailed information about the data issue report

    Gear

    todo...
    "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!

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