diff --git a/.gitignore b/.gitignore
index d3c658f..cf6fbe1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
node_modules/
*.tmp
*.bak.*
-references/
\ No newline at end of file
+references.txt
\ No newline at end of file
diff --git a/references/dnd5e-templates.json b/references/dnd5e-templates.json
deleted file mode 100644
index 7dd30de..0000000
--- a/references/dnd5e-templates.json
+++ /dev/null
@@ -1,829 +0,0 @@
-{
- "Actor": {
- "types": [
- "character",
- "npc",
- "vehicle",
- "group"
- ],
- "templates": {
- "common": {
- "abilities": {
- "str": {
- "value": 10,
- "proficient": 0,
- "max": null,
- "bonuses": {
- "check": "",
- "save": ""
- }
- },
- "dex": {
- "value": 10,
- "proficient": 0,
- "max": null,
- "bonuses": {
- "check": "",
- "save": ""
- }
- },
- "con": {
- "value": 10,
- "proficient": 0,
- "max": null,
- "bonuses": {
- "check": "",
- "save": ""
- }
- },
- "int": {
- "value": 10,
- "proficient": 0,
- "max": null,
- "bonuses": {
- "check": "",
- "save": ""
- }
- },
- "wis": {
- "value": 10,
- "proficient": 0,
- "max": null,
- "bonuses": {
- "check": "",
- "save": ""
- }
- },
- "cha": {
- "value": 10,
- "proficient": 0,
- "max": null,
- "bonuses": {
- "check": "",
- "save": ""
- }
- }
- },
- "attributes": {
- "ac": {
- "flat": null,
- "calc": "default",
- "formula": ""
- },
- "hp": {
- "value": 10,
- "max": null,
- "temp": 0,
- "tempmax": 0
- },
- "init": {
- "ability": "",
- "bonus": ""
- },
- "movement": {
- "burrow": null,
- "climb": null,
- "fly": null,
- "swim": null,
- "walk": null,
- "units": null,
- "hover": false
- }
- },
- "details": {
- "biography": {
- "value": "",
- "public": ""
- }
- },
- "traits": {
- "size": "med",
- "di": {
- "value": [],
- "bypasses": [],
- "custom": ""
- },
- "dr": {
- "value": [],
- "bypasses": [],
- "custom": ""
- },
- "dv": {
- "value": [],
- "bypasses": [],
- "custom": ""
- },
- "ci": {
- "value": [],
- "custom": ""
- }
- },
- "currency": {
- "pp": 0,
- "gp": 0,
- "ep": 0,
- "sp": 0,
- "cp": 0
- }
- },
- "creature": {
- "attributes": {
- "attunement": {
- "max": 3
- },
- "senses": {
- "darkvision": null,
- "blindsight": null,
- "tremorsense": null,
- "truesight": null,
- "units": null,
- "special": ""
- },
- "spellcasting": "int"
- },
- "details": {
- "alignment": "",
- "race": ""
- },
- "skills": {
- "acr": {
- "value": 0,
- "ability": "dex",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "ani": {
- "value": 0,
- "ability": "wis",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "arc": {
- "value": 0,
- "ability": "int",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "ath": {
- "value": 0,
- "ability": "str",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "dec": {
- "value": 0,
- "ability": "cha",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "his": {
- "value": 0,
- "ability": "int",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "ins": {
- "value": 0,
- "ability": "wis",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "itm": {
- "value": 0,
- "ability": "cha",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "inv": {
- "value": 0,
- "ability": "int",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "med": {
- "value": 0,
- "ability": "wis",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "nat": {
- "value": 0,
- "ability": "int",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "prc": {
- "value": 0,
- "ability": "wis",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "prf": {
- "value": 0,
- "ability": "cha",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "per": {
- "value": 0,
- "ability": "cha",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "rel": {
- "value": 0,
- "ability": "int",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "slt": {
- "value": 0,
- "ability": "dex",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "ste": {
- "value": 0,
- "ability": "dex",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- },
- "sur": {
- "value": 0,
- "ability": "wis",
- "bonuses": {
- "check": "",
- "passive": ""
- }
- }
- },
- "tools": {},
- "traits": {
- "languages": {
- "value": [],
- "custom": ""
- }
- },
- "spells": {},
- "bonuses": {
- "mwak": {
- "attack": "",
- "damage": ""
- },
- "rwak": {
- "attack": "",
- "damage": ""
- },
- "msak": {
- "attack": "",
- "damage": ""
- },
- "rsak": {
- "attack": "",
- "damage": ""
- },
- "abilities": {
- "check": "",
- "save": "",
- "skill": ""
- },
- "spell": {
- "dc": ""
- }
- }
- }
- },
- "htmlFields": [
- "details.biography.value",
- "details.biography.public",
- "description.full",
- "description.summary"
- ],
- "character": {
- "templates": [
- "common",
- "creature"
- ],
- "attributes": {
- "hp": {
- "value": 0,
- "bonuses": {
- "level": "",
- "overall": ""
- }
- },
- "death": {
- "success": 0,
- "failure": 0
- },
- "exhaustion": 0,
- "inspiration": false
- },
- "details": {
- "background": "",
- "originalClass": "",
- "xp": {
- "value": 0
- },
- "appearance": "",
- "trait": "",
- "ideal": "",
- "bond": "",
- "flaw": ""
- },
- "resources": {
- "primary": {
- "value": 0,
- "max": 0,
- "sr": false,
- "lr": false,
- "label": ""
- },
- "secondary": {
- "value": 0,
- "max": 0,
- "sr": false,
- "lr": false,
- "label": ""
- },
- "tertiary": {
- "value": 0,
- "max": 0,
- "sr": false,
- "lr": false,
- "label": ""
- }
- },
- "traits": {
- "weaponProf": {
- "value": [],
- "custom": ""
- },
- "armorProf": {
- "value": [],
- "custom": ""
- },
- "toolProf": {
- "value": [],
- "custom": ""
- }
- }
- },
- "npc": {
- "templates": [
- "common",
- "creature"
- ],
- "attributes": {
- "hp": {
- "max": 10,
- "formula": ""
- }
- },
- "details": {
- "type": {
- "value": "",
- "subtype": "",
- "swarm": "",
- "custom": ""
- },
- "environment": "",
- "cr": 1,
- "spellLevel": 0,
- "source": ""
- },
- "resources": {
- "legact": {
- "value": 0,
- "max": 0
- },
- "legres": {
- "value": 0,
- "max": 0
- },
- "lair": {
- "value": false,
- "initiative": null
- }
- }
- },
- "vehicle": {
- "templates": [
- "common"
- ],
- "vehicleType": "water",
- "abilities": {
- "int": {
- "value": 0
- },
- "wis": {
- "value": 0
- },
- "cha": {
- "value": 0
- }
- },
- "attributes": {
- "ac": {
- "calc": "flat",
- "motionless": ""
- },
- "actions": {
- "stations": false,
- "value": 0,
- "thresholds": {
- "2": null,
- "1": null,
- "0": null
- }
- },
- "hp": {
- "value": null,
- "dt": null,
- "mt": null
- },
- "capacity": {
- "creature": "",
- "cargo": 0
- }
- },
- "traits": {
- "size": "lg",
- "dimensions": "",
- "di": {
- "value": [
- "poison",
- "psychic"
- ]
- },
- "ci": {
- "value": [
- "blinded",
- "charmed",
- "deafened",
- "frightened",
- "paralyzed",
- "petrified",
- "poisoned",
- "stunned",
- "unconscious"
- ]
- }
- },
- "cargo": {
- "crew": [],
- "passengers": []
- }
- },
- "group": {
- "description": {
- "full": "",
- "summary": ""
- },
- "members": [],
- "attributes": {
- "movement": {
- "land": 0,
- "water": 0,
- "air": 0
- }
- },
- "currency": {
- "pp": 0,
- "gp": 0,
- "ep": 0,
- "sp": 0,
- "cp": 0
- }
- }
- },
- "Item": {
- "types": [
- "weapon",
- "equipment",
- "consumable",
- "tool",
- "loot",
- "race",
- "background",
- "class",
- "subclass",
- "spell",
- "feat",
- "backpack"
- ],
- "templates": {
- "itemDescription": {
- "description": {
- "value": "",
- "chat": "",
- "unidentified": ""
- },
- "source": {}
- },
- "physicalItem": {
- "quantity": 1,
- "weight": 0,
- "price": {
- "value": 0,
- "denomination": "gp"
- },
- "attunement": 0,
- "equipped": false,
- "rarity": "",
- "identified": true
- },
- "activatedEffect": {
- "activation": {
- "type": "",
- "cost": null,
- "condition": ""
- },
- "duration": {
- "value": "",
- "units": ""
- },
- "cover": null,
- "crewed": false,
- "target": {
- "value": null,
- "width": null,
- "units": "",
- "type": ""
- },
- "range": {
- "value": null,
- "long": null,
- "units": ""
- },
- "uses": {
- "value": null,
- "max": "",
- "per": null,
- "recovery": ""
- },
- "consume": {
- "type": "",
- "target": null,
- "amount": null
- }
- },
- "action": {
- "ability": null,
- "actionType": null,
- "attackBonus": "",
- "chatFlavor": "",
- "critical": {
- "threshold": null,
- "damage": ""
- },
- "damage": {
- "parts": [],
- "versatile": ""
- },
- "formula": "",
- "save": {
- "ability": "",
- "dc": null,
- "scaling": "spell"
- }
- },
- "mountable": {
- "armor": {
- "value": null
- },
- "hp": {
- "value": null,
- "max": null,
- "dt": null,
- "conditions": ""
- }
- }
- },
- "htmlFields": [
- "description.value",
- "description.chat",
- "description.unidentified"
- ],
- "background": {
- "templates": [
- "itemDescription"
- ],
- "advancement": []
- },
- "backpack": {
- "templates": [
- "itemDescription",
- "physicalItem"
- ],
- "capacity": {
- "type": "weight",
- "value": null,
- "weightless": false
- },
- "currency": {
- "cp": 0,
- "sp": 0,
- "ep": 0,
- "gp": 0,
- "pp": 0
- }
- },
- "class": {
- "templates": [
- "itemDescription"
- ],
- "identifier": "",
- "levels": 1,
- "hitDice": "d6",
- "hitDiceUsed": 0,
- "advancement": [],
- "spellcasting": {
- "progression": "none",
- "ability": ""
- }
- },
- "consumable": {
- "templates": [
- "itemDescription",
- "physicalItem",
- "activatedEffect",
- "action"
- ],
- "consumableType": "potion",
- "uses": {
- "autoDestroy": false
- }
- },
- "equipment": {
- "templates": [
- "itemDescription",
- "physicalItem",
- "activatedEffect",
- "action",
- "mountable"
- ],
- "armor": {
- "type": "light",
- "value": null,
- "dex": null
- },
- "baseItem": "",
- "speed": {
- "value": null,
- "conditions": ""
- },
- "strength": null,
- "stealth": false,
- "proficient": null
- },
- "feat": {
- "templates": [
- "itemDescription",
- "activatedEffect",
- "action"
- ],
- "type": {
- "value": "",
- "subtype": ""
- },
- "requirements": "",
- "recharge": {
- "value": null,
- "charged": false
- }
- },
- "loot": {
- "templates": [
- "itemDescription",
- "physicalItem"
- ]
- },
- "tool": {
- "templates": [
- "itemDescription",
- "physicalItem"
- ],
- "toolType": "",
- "baseItem": "",
- "ability": "int",
- "chatFlavor": "",
- "proficient": null,
- "bonus": ""
- },
- "race": {},
- "spell": {
- "templates": [
- "itemDescription",
- "activatedEffect",
- "action"
- ],
- "level": 1,
- "school": "",
- "components": {
- "vocal": false,
- "somatic": false,
- "material": false,
- "ritual": false,
- "concentration": false
- },
- "materials": {
- "value": "",
- "consumed": false,
- "cost": 0,
- "supply": 0
- },
- "preparation": {
- "mode": "prepared",
- "prepared": false
- },
- "scaling": {
- "mode": "none",
- "formula": null
- }
- },
- "subclass": {
- "templates": [
- "itemDescription"
- ],
- "identifier": "",
- "classIdentifier": "",
- "advancement": [],
- "spellcasting": {
- "progression": "none",
- "ability": ""
- }
- },
- "weapon": {
- "templates": [
- "itemDescription",
- "physicalItem",
- "activatedEffect",
- "action",
- "mountable"
- ],
- "weaponType": "simpleM",
- "baseItem": "",
- "properties": {},
- "proficient": null
- }
- },
- "JournalEntryPage": {
- "types": [
- "class"
- ],
- "htmlFields": [
- "description.value",
- "description.additionalHitPoints",
- "description.additionalTraits",
- "description.additionalEquipment",
- "description.subclass"
- ],
- "class": {
- "item": "",
- "description": {
- "value": "",
- "additionalHitPoints": "",
- "additionalTraits": "",
- "additionalEquipment": "",
- "subclass": ""
- },
- "subclassHeader": "",
- "subclassItems": []
- }
- }
-}
\ No newline at end of file
diff --git a/references/simple.js b/references/simple.js
deleted file mode 100644
index 671b8ef..0000000
--- a/references/simple.js
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * A simple and flexible system for world-building using an arbitrary collection of character and item attributes
- * Author: Atropos
- */
-
-// Import Modules
-import { SimpleActor } from "./actor.js";
-import { SimpleItem } from "./item.js";
-import { SimpleItemSheet } from "./item-sheet.js";
-import { SimpleActorSheet } from "./actor-sheet.js";
-import { preloadHandlebarsTemplates } from "./templates.js";
-import { createWorldbuildingMacro } from "./macro.js";
-import { SimpleToken, SimpleTokenDocument } from "./token.js";
-
-/* -------------------------------------------- */
-/* Foundry VTT Initialization */
-/* -------------------------------------------- */
-
-/**
- * Init hook.
- */
-Hooks.once("init", async function() {
- console.log(`Initializing Simple Worldbuilding System`);
-
- /**
- * Set an initiative formula for the system. This will be updated later.
- * @type {String}
- */
- CONFIG.Combat.initiative = {
- formula: "1d20",
- decimals: 2
- };
-
- game.worldbuilding = {
- SimpleActor,
- createWorldbuildingMacro
- };
-
- // Define custom Document classes
- CONFIG.Actor.documentClass = SimpleActor;
- CONFIG.Item.documentClass = SimpleItem;
- CONFIG.Token.documentClass = SimpleTokenDocument;
- CONFIG.Token.objectClass = SimpleToken;
-
- // Register sheet application classes
- Actors.unregisterSheet("core", ActorSheet);
- Actors.registerSheet("worldbuilding", SimpleActorSheet, { makeDefault: true });
- Items.unregisterSheet("core", ItemSheet);
- Items.registerSheet("worldbuilding", SimpleItemSheet, { makeDefault: true });
-
- // Register system settings
- game.settings.register("worldbuilding", "macroShorthand", {
- name: "SETTINGS.SimpleMacroShorthandN",
- hint: "SETTINGS.SimpleMacroShorthandL",
- scope: "world",
- type: Boolean,
- default: true,
- config: true
- });
-
- // Register initiative setting.
- game.settings.register("worldbuilding", "initFormula", {
- name: "SETTINGS.SimpleInitFormulaN",
- hint: "SETTINGS.SimpleInitFormulaL",
- scope: "world",
- type: String,
- default: "1d20",
- config: true,
- onChange: formula => _simpleUpdateInit(formula, true)
- });
-
- // Retrieve and assign the initiative formula setting.
- const initFormula = game.settings.get("worldbuilding", "initFormula");
- _simpleUpdateInit(initFormula);
-
- /**
- * Update the initiative formula.
- * @param {string} formula - Dice formula to evaluate.
- * @param {boolean} notify - Whether or not to post nofications.
- */
- function _simpleUpdateInit(formula, notify = false) {
- const isValid = Roll.validate(formula);
- if ( !isValid ) {
- if ( notify ) ui.notifications.error(`${game.i18n.localize("SIMPLE.NotifyInitFormulaInvalid")}: ${formula}`);
- return;
- }
- CONFIG.Combat.initiative.formula = formula;
- }
-
- /**
- * Slugify a string.
- */
- Handlebars.registerHelper('slugify', function(value) {
- return value.slugify({strict: true});
- });
-
- // Preload template partials
- await preloadHandlebarsTemplates();
-});
-
-/**
- * Macrobar hook.
- */
-Hooks.on("hotbarDrop", (bar, data, slot) => createWorldbuildingMacro(data, slot));
-
-/**
- * Adds the actor template context menu.
- */
-Hooks.on("getActorDirectoryEntryContext", (html, options) => {
-
- // Define an actor as a template.
- options.push({
- name: game.i18n.localize("SIMPLE.DefineTemplate"),
- icon: '',
- condition: li => {
- const actor = game.actors.get(li.data("documentId"));
- return !actor.isTemplate;
- },
- callback: li => {
- const actor = game.actors.get(li.data("documentId"));
- actor.setFlag("worldbuilding", "isTemplate", true);
- }
- });
-
- // Undefine an actor as a template.
- options.push({
- name: game.i18n.localize("SIMPLE.UnsetTemplate"),
- icon: '',
- condition: li => {
- const actor = game.actors.get(li.data("documentId"));
- return actor.isTemplate;
- },
- callback: li => {
- const actor = game.actors.get(li.data("documentId"));
- actor.setFlag("worldbuilding", "isTemplate", false);
- }
- });
-});
-
-/**
- * Adds the item template context menu.
- */
-Hooks.on("getItemDirectoryEntryContext", (html, options) => {
-
- // Define an item as a template.
- options.push({
- name: game.i18n.localize("SIMPLE.DefineTemplate"),
- icon: '',
- condition: li => {
- const item = game.items.get(li.data("documentId"));
- return !item.isTemplate;
- },
- callback: li => {
- const item = game.items.get(li.data("documentId"));
- item.setFlag("worldbuilding", "isTemplate", true);
- }
- });
-
- // Undefine an item as a template.
- options.push({
- name: game.i18n.localize("SIMPLE.UnsetTemplate"),
- icon: '',
- condition: li => {
- const item = game.items.get(li.data("documentId"));
- return item.isTemplate;
- },
- callback: li => {
- const item = game.items.get(li.data("documentId"));
- item.setFlag("worldbuilding", "isTemplate", false);
- }
- });
-});
\ No newline at end of file