diff --git a/modules/crucible-actor-sheet.js b/modules/crucible-actor-sheet.js index c96ca4d..a5b7353 100644 --- a/modules/crucible-actor-sheet.js +++ b/modules/crucible-actor-sheet.js @@ -24,16 +24,15 @@ export class CrucibleActorSheet extends ActorSheet { /* -------------------------------------------- */ async getData() { - const objectData = CrucibleUtility.data(this.object); - - let actorData = duplicate(CrucibleUtility.templateData(this.object)); + const objectData = this.object.system + let actorData = duplicate(objectData) let formData = { title: this.title, - id: objectData.id, - type: objectData.type, - img: objectData.img, - name: objectData.name, + id: this.actor.id, + type: this.actor.type, + img: this.actor.img, + name: this.actor.name, editable: this.isEditable, cssClass: this.isEditable ? "editable" : "locked", data: actorData, @@ -200,9 +199,9 @@ export class CrucibleActorSheet extends ActorSheet { /* -------------------------------------------- */ async _onDropItem(event, dragData) { console.log(">>>>>> DROPPED!!!!") - let item = await CrucibleUtility.searchItem( dragData) + const item = fromUuidSync(dragData.uuid) if (item == undefined) { - item = this.actor.items.get( dragData.data._id ) + item = this.actor.items.get( item.id ) } let ret = await this.actor.preprocessItem( event, item, true ) if ( ret ) { diff --git a/modules/crucible-actor.js b/modules/crucible-actor.js index 6d67b7d..823aea9 100644 --- a/modules/crucible-actor.js +++ b/modules/crucible-actor.js @@ -63,22 +63,22 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ computeHitPoints() { - let hp = duplicate(this.data.data.secondary.hp) - let max = (this.data.data.abilities.str.value + this.data.data.abilities.con.value) * 6 + let hp = duplicate(this.system.secondary.hp) + let max = (this.system.abilities.str.value + this.system.abilities.con.value) * 6 if (max != hp.max || hp.value > max) { hp.max = max hp.value = max // Init case - this.update({ 'data.secondary.hp': hp }) + this.update({ 'system.secondary.hp': hp }) } } /* -------------------------------------------- */ computeEffortPoints() { - let effort = duplicate(this.data.data.secondary.effort) - let max = (this.data.data.abilities.con.value + this.data.data.abilities.int.value) * 6 + let effort = duplicate(this.system.secondary.effort) + let max = (this.system.abilities.con.value + this.system.abilities.int.value) * 6 if (max != effort.max || effort.value > max) { effort.max = max effort.value = max // Init case - this.update({ 'data.secondary.effort': effort }) + this.update({ 'system.secondary.effort': effort }) } } @@ -86,7 +86,7 @@ export class CrucibleActor extends Actor { prepareDerivedData() { if (this.type == 'character' || game.user.isGM) { - this.data.data.encCapacity = this.getEncumbranceCapacity() + this.system.encCapacity = this.getEncumbranceCapacity() this.buildContainerTree() this.computeHitPoints() this.computeEffortPoints() @@ -108,46 +108,46 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ getMoneys() { - let comp = this.data.items.filter(item => item.type == 'money'); + let comp = this.items.filter(item => item.type == 'money'); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } /* -------------------------------------------- */ getFeats() { - let comp = duplicate(this.data.items.filter(item => item.type == 'feat') || []); + let comp = duplicate(this.items.filter(item => item.type == 'feat') || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } /* -------------------------------------------- */ getFeatsWithDie() { - let comp = duplicate(this.data.items.filter(item => item.type == 'feat' && item.data.data.isfeatdie) || []); + let comp = duplicate(this.items.filter(item => item.type == 'feat' && item.system.isfeatdie) || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } getFeatsWithSL() { - let comp = duplicate(this.data.items.filter(item => item.type == 'feat' && item.data.data.issl) || []); + let comp = duplicate(this.items.filter(item => item.type == 'feat' && item.system.issl) || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } /* -------------------------------------------- */ getLore() { - let comp = duplicate(this.data.items.filter(item => item.type == 'spell') || []); + let comp = duplicate(this.items.filter(item => item.type == 'spell') || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } getEquippedWeapons() { - let comp = duplicate(this.data.items.filter(item => item.type == 'weapon' && item.data.data.equipped) || []); + let comp = duplicate(this.items.filter(item => item.type == 'weapon' && item.system.equipped) || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } /* -------------------------------------------- */ getArmors() { - let comp = duplicate(this.data.items.filter(item => item.type == 'armor') || []); + let comp = duplicate(this.items.filter(item => item.type == 'armor') || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } getEquippedArmor() { - let comp = this.data.items.find(item => item.type == 'armor' && item.data.data.equipped) + let comp = this.items.find(item => item.type == 'armor' && item.system.equipped) if (comp) { return duplicate(comp) } @@ -155,12 +155,12 @@ export class CrucibleActor extends Actor { } /* -------------------------------------------- */ getShields() { - let comp = duplicate(this.data.items.filter(item => item.type == 'shield') || []); + let comp = duplicate(this.items.filter(item => item.type == 'shield') || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } getEquippedShield() { - let comp = this.data.items.find(item => item.type == 'shield' && item.data.data.equipped) + let comp = this.items.find(item => item.type == 'shield' && item.system.equipped) if (comp) { return duplicate(comp) } @@ -168,7 +168,7 @@ export class CrucibleActor extends Actor { } /* -------------------------------------------- */ getRace() { - let race = this.data.items.filter(item => item.type == 'race') + let race = this.items.filter(item => item.type == 'race') return race[0] ?? []; } /* -------------------------------------------- */ @@ -185,25 +185,22 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ getWeapons() { - let comp = duplicate(this.data.items.filter(item => item.type == 'weapon') || []); + let comp = duplicate(this.items.filter(item => item.type == 'weapon') || []); CrucibleUtility.sortArrayObjectsByName(comp) return comp; } /* -------------------------------------------- */ getItemById(id) { - let item = this.data.items.find(item => item.id == id); + let item = this.items.find(item => item.id == id); if (item) { item = duplicate(item) - if (item.type == 'specialisation') { - item.data.dice = CrucibleUtility.getDiceFromLevel(item.data.level); - } } return item; } /* -------------------------------------------- */ getSkills() { - let comp = duplicate(this.data.items.filter(item => item.type == 'skill') || []) + let comp = duplicate(this.items.filter(item => item.type == 'skill') || []) for (let skill of comp) { CrucibleUtility.updateSkill(skill) } @@ -213,30 +210,30 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ getRelevantAbility(statKey) { - let comp = duplicate(this.data.items.filter(item => item.type == 'skill' && item.data.data.ability == ability) || []); + let comp = duplicate(this.items.filter(item => item.type == 'skill' && item.system.ability == ability) || []); return comp; } /* -------------------------------------------- */ async equipItem(itemId) { - let item = this.data.items.find(item => item.id == itemId) - if (item && item.data.data) { + let item = this.items.find(item => item.id == itemId) + if (item && item.system) { if (item.type == "armor") { - let armor = this.data.items.find(item => item.id != itemId && item.type == "armor" && item.data.data.equipped) + let armor = this.items.find(item => item.id != itemId && item.type == "armor" && item.system.equipped) if (armor) { ui.notifications.warn("You already have an armor equipped!") return } } if (item.type == "shield") { - let shield = this.data.items.find(item => item.id != itemId && item.type == "shield" && item.data.data.equipped) + let shield = this.items.find(item => item.id != itemId && item.type == "shield" && item.system.equipped) if (shield) { ui.notifications.warn("You already have a shield equipped!") return } } - let update = { _id: item.id, "data.equipped": !item.data.data.equipped }; + let update = { _id: item.id, "system.equipped": !item.system.equipped }; await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity } } @@ -254,11 +251,11 @@ export class CrucibleActor extends Actor { /* ------------------------------------------- */ getEquipments() { - return this.data.items.filter(item => item.type == 'shield' || item.type == 'armor' || item.type == "weapon" || item.type == "equipment"); + return this.items.filter(item => item.type == 'shield' || item.type == 'armor' || item.type == "weapon" || item.type == "equipment"); } /* ------------------------------------------- */ getEquipmentsOnly() { - return duplicate(this.data.items.filter(item => item.type == "equipment") || []) + return duplicate(this.items.filter(item => item.type == "equipment") || []) } /* ------------------------------------------- */ @@ -267,33 +264,33 @@ export class CrucibleActor extends Actor { reflex: { "label": "Reflex Save", "img": "systems/fvtt-crucible-rpg/images/icons/saves/reflex_save.webp", - "value": this.data.data.abilities.agi.value + this.data.data.abilities.wit.value + "value": this.system.abilities.agi.value + this.system.abilities.wit.value }, fortitude: { "label": "Fortitude Save", "img": "systems/fvtt-crucible-rpg/images/icons/saves/fortitude_save.webp", - "value": this.data.data.abilities.str.value + this.data.data.abilities.con.value + "value": this.system.abilities.str.value + this.system.abilities.con.value }, willpower: { "label": "Willpower Save", "img": "systems/fvtt-crucible-rpg/images/icons/saves/will_save.webp", - "value": this.data.data.abilities.int.value + this.data.data.abilities.cha.value + "value": this.system.abilities.int.value + this.system.abilities.cha.value } } } /* ------------------------------------------- */ async buildContainerTree() { - let equipments = duplicate(this.data.items.filter(item => item.type == "equipment") || []) + let equipments = duplicate(this.items.filter(item => item.type == "equipment") || []) for (let equip1 of equipments) { - if (equip1.data.iscontainer) { - equip1.data.contents = [] - equip1.data.contentsEnc = 0 + if (equip1.system.iscontainer) { + equip1.system.contents = [] + equip1.system.contentsEnc = 0 for (let equip2 of equipments) { - if (equip1._id != equip2._id && equip2.data.containerid == equip1._id) { - equip1.data.contents.push(equip2) - let q = equip2.data.quantity ?? 1 - equip1.data.contentsEnc += q * equip2.data.weight + if (equip1._id != equip2.id && equip2.system.containerid == equip1.id) { + equip1.system.contents.push(equip2) + let q = equip2.system.quantity ?? 1 + equip1.system.contentsEnc += q * equip2.system.weight } } } @@ -303,25 +300,25 @@ export class CrucibleActor extends Actor { let enc = 0 for (let item of equipments) { //item.data.idrDice = CrucibleUtility.getDiceFromLevel(Number(item.data.idr)) - if (item.data.equipped) { - if (item.data.iscontainer) { - enc += item.data.contentsEnc - } else if (item.data.containerid == "") { - let q = item.data.quantity ?? 1 - enc += q * item.data.weight + if (item.system.equipped) { + if (item.system.iscontainer) { + enc += item.system.contentsEnc + } else if (item.system.containerid == "") { + let q = item.system.quantity ?? 1 + enc += q * item.system.weight } } } - for (let item of this.data.items) { // Process items/shields/armors - if ((item.type == "weapon" || item.type == "shield" || item.type == "armor") && item.data.data.equipped) { - let q = item.data.data.quantity ?? 1 - enc += q * item.data.data.weight + for (let item of this.items) { // Process items/shields/armors + if ((item.type == "weapon" || item.type == "shield" || item.type == "armor") && item.system.equipped) { + let q = item.system.quantity ?? 1 + enc += q * item.system.weight } } // Store local values this.encCurrent = enc - this.containersTree = equipments.filter(item => item.data.containerid == "") // Returns the root of equipements without container + this.containersTree = equipments.filter(item => item.system.containerid == "") // Returns the root of equipements without container } @@ -338,36 +335,36 @@ export class CrucibleActor extends Actor { async incDecHP( formula ) { let dmgRoll = new Roll(formula).roll( {async: false}) await CrucibleUtility.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode")) - let hp = duplicate(this.data.data.secondary.hp) + let hp = duplicate(this.system.secondary.hp) hp.value = Number(hp.value) + Number(dmgRoll.total) - this.update( {'data.secondary.hp': hp }) + this.update( {'system.secondary.hp': hp }) return Number(dmgRoll.total) } /* -------------------------------------------- */ getAbility(abilKey) { - return this.data.data.abilities[abilKey]; + return this.system.abilities[abilKey]; } /* -------------------------------------------- */ async addObjectToContainer(itemId, containerId) { - let container = this.data.items.find(item => item.id == containerId && item.data.data.iscontainer) - let object = this.data.items.find(item => item.id == itemId) + let container = this.items.find(item => item.id == containerId && item.system.iscontainer) + let object = this.items.find(item => item.id == itemId) if (container) { - if (object.data.data.iscontainer) { + if (object.system.iscontainer) { ui.notifications.warn("Only 1 level of container allowed") return } - let alreadyInside = this.data.items.filter(item => item.data.data.containerid && item.data.data.containerid == containerId); - if (alreadyInside.length >= container.data.data.containercapacity) { + let alreadyInside = this.items.filter(item => item.system.containerid && item.system.containerid == containerId); + if (alreadyInside.length >= container.system.containercapacity) { ui.notifications.warn("Container is already full !") return } else { - await this.updateEmbeddedDocuments("Item", [{ _id: object.id, 'data.containerid': containerId }]) + await this.updateEmbeddedDocuments("Item", [{ _id: object.id, 'system.containerid': containerId }]) } - } else if (object && object.data.data.containerid) { // remove from container + } else if (object && object.system.containerid) { // remove from container console.log("Removeing: ", object) - await this.updateEmbeddedDocuments("Item", [{ _id: object.id, 'data.containerid': "" }]); + await this.updateEmbeddedDocuments("Item", [{ _id: object.id, 'system.containerid': "" }]); } } @@ -381,9 +378,9 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ async equipGear(equipmentId) { - let item = this.data.items.find(item => item.id == equipmentId); - if (item && item.data.data) { - let update = { _id: item.id, "data.equipped": !item.data.data.equipped }; + let item = this.items.find(item => item.id == equipmentId); + if (item && item.system) { + let update = { _id: item.id, "system.equipped": !item.system.equipped }; await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity } } @@ -399,26 +396,26 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ getSubActors() { let subActors = []; - for (let id of this.data.data.subactors) { + for (let id of this.system.subactors) { subActors.push(duplicate(game.actors.get(id))) } return subActors; } /* -------------------------------------------- */ async addSubActor(subActorId) { - let subActors = duplicate(this.data.data.subactors); + let subActors = duplicate(this.system.subactors); subActors.push(subActorId); - await this.update({ 'data.subactors': subActors }); + await this.update({ 'system.subactors': subActors }); } /* -------------------------------------------- */ async delSubActor(subActorId) { let newArray = []; - for (let id of this.data.data.subactors) { + for (let id of this.system.subactors) { if (id != subActorId) { newArray.push(id); } } - await this.update({ 'data.subactors': newArray }); + await this.update({ 'system.subactors': newArray }); } /* -------------------------------------------- */ @@ -429,7 +426,7 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ getOneSkill(skillId) { - let skill = this.data.items.find(item => item.type == 'skill' && item.id == skillId) + let skill = this.items.find(item => item.type == 'skill' && item.id == skillId) if (skill) { skill = duplicate(skill); } @@ -438,13 +435,13 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ async deleteAllItemsByType(itemType) { - let items = this.data.items.filter(item => item.type == itemType); + let items = this.items.filter(item => item.type == itemType); await this.deleteEmbeddedDocuments('Item', items); } /* -------------------------------------------- */ async addItemWithoutDuplicate(newItem) { - let item = this.data.items.find(item => item.type == newItem.type && item.name.toLowerCase() == newItem.name.toLowerCase()) + let item = this.items.find(item => item.type == newItem.type && item.name.toLowerCase() == newItem.name.toLowerCase()) if (!item) { await this.createEmbeddedDocuments('Item', [newItem]); } @@ -452,23 +449,23 @@ export class CrucibleActor extends Actor { /* -------------------------------------------- */ async incrementSkillExp(skillId, inc) { - let skill = this.data.items.get(skillId) + let skill = this.items.get(skillId) if (skill) { - await this.updateEmbeddedDocuments('Item', [{ _id: skill.id, 'data.exp': skill.data.data.exp + inc }]) + await this.updateEmbeddedDocuments('Item', [{ _id: skill.id, 'system.exp': skill.system.exp + inc }]) let chatData = { user: game.user.id, rollMode: game.settings.get("core", "rollMode"), whisper: [game.user.id].concat(ChatMessage.getWhisperRecipients('GM')), - content: `
Hand Axe
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"3VT9Bgs1lpFRqgWt","name":"2-H Pick","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Pick.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy,Penetrating","flaws":"","damage":"Piercing","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Pick
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"6B8kMi1FHv5njtbD","name":"2-H Flail","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Flail.webp","data":{"ability":"agi","isproficient":false,"qualities":"Heavy,Reach,Entangle","flaws":"Dangerous","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Flail
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"A4O9ISnyCqtckanV","name":"Dagger (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Dagger.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"Light","damage":"Piercing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Dagger
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"Czf55rIkPBsaLLfN","name":"Hammer (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hammer.webp","data":{"ability":"dex","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"Same Zone","maxrange":"1 Zone","minstr":0,"cost":0,"equipped":false,"description":"Hammer
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"GrjekQXKaFnFODXK","name":"Unarmed","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Unarmed.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"Undamaging","damage":"Bludgeoning","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Unarmed
\n\n
As an UNDAMAGING attack the maximum Result is +2.
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"JXK1qP9uqlxvcnxB","name":"2-H Club","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Club.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"2-H Club
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"LATr6R7cNOtYJgaO","name":"Hammer (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hammer.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Hammer
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"MpzJvauaq7UKdyi5","name":"Sling","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sling.webp","data":{"ability":"dex","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"2 Zones","maxrange":"3 Zones","minstr":0,"cost":0,"equipped":false,"description":"Sling
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"PDXDPlqck6VURcGB","name":"2-H Axe","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Axe.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy,Hack","flaws":"","damage":"Slashing","range":"","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Axe
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"Q4tpJZV4HAsyVAWT","name":"2-H Mace","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Mace.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Mace
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"QRMIOZHBrauWQjTb","name":"Bite","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Bite.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"","damage":"Piercing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Bite - natural weapon
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"QzJZr6guDrUjsuTU","name":"Spear (1-H)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Spear.webp","data":{"ability":"agi","isproficient":false,"qualities":"Reach","flaws":"","damage":"Piercing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Spear
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"Sm3Pze2LY6BnoTBq","name":"Mace","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Mace.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Mace
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"VOg1kpjhJ7h3XsSk","name":"Club","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Club.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"Light","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Club
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"WvqALDHVEVt6TskF","name":"Javelin","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Javelin.webp","data":{"ability":"agi","isproficient":false,"qualities":"Penetrating","flaws":"","damage":"Piercing","range":"2 Zones","maxrange":"4 Zones","minstr":0,"cost":0,"equipped":false,"description":"Javelin
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"XTfw2cefPXucQgMG","name":"Crossbow","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Crossbow.webp","data":{"isproficient":false,"skill":"Axe","qualities":"Penetrating","flaws":"Reload","damage":"Piercing","range":"3 Zones","maxrange":"5 Zones","minstr":0,"cost":0,"equipped":false,"description":"Crossbow
\nRequires 1 Action to reload after shooting - So you can only shoot every other Action Round.
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"XUAMSiOmPHi1LEHs","name":"2-H Hammer","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Hammer.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Hammer
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"ZfBqMaYjg5z8Kh97","name":"Hand Axe (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hand%20Axe.webp","data":{"ability":"str","isproficient":false,"qualities":"Hack","flaws":"Light","damage":"Slashing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Hand Axe
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"ZoooviRlvZIQR6d2","name":"Sting","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sting.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"","damage":"Piercing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Sting - natural weapon
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"cC3xXzzZ8UpDGONs","name":"2-H Sword","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Sword.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy,Reach,Hack","flaws":"","damage":"Slashing","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-Handed Sword
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"cMMWV7HusxfUfL4E","name":"Flail","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Flail.webp","data":{"ability":"agi","isproficient":false,"qualities":"Entangle","flaws":"Dangerous","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Flail
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"fE5cUHjc5GYGRdty","name":"Spear (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Spear.webp","data":{"ability":"agi","isproficient":false,"qualities":"Penetrating","flaws":"","damage":"Piercing","range":"2 Zones","maxrange":"3 Zones","minstr":0,"cost":0,"equipped":false,"description":"Spear
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"3QGyPwA2H8RwtFBr","name":"Hand Axe (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hand%20Axe.webp","data":{"isproficient":false,"skill":"Weapon - Hand Axe (Thrown)","qualities":"","flaws":"Light","damage":"Slashing","isranged":true,"range":"Same Zone","maxrange":"1 Zone","minstr":0,"cost":0,"equipped":false,"description":"Hand Axe
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"3VT9Bgs1lpFRqgWt","name":"2-H Pick","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Pick.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Pick","qualities":"Heavy,Penetrating","flaws":"","damage":"Piercing","isranged":false,"range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Pick
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"6B8kMi1FHv5njtbD","name":"2-H Flail","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Flail.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Flail","qualities":"Heavy,Reach,Entangle","flaws":"Dangerous","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Flail
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"A4O9ISnyCqtckanV","name":"Dagger (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Dagger.webp","data":{"isproficient":false,"skill":"Weapon - Dagger (Melee)","qualities":"","flaws":"Light","damage":"Piercing","isranged":false,"range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Dagger
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"Czf55rIkPBsaLLfN","name":"Hammer (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hammer.webp","data":{"isproficient":false,"skill":"Weapon - Hammer (Thrown)","qualities":"","flaws":"","damage":"Bludgeoning","isranged":true,"range":"Same Zone","maxrange":"1 Zone","minstr":0,"cost":0,"equipped":false,"description":"Hammer
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"GrjekQXKaFnFODXK","name":"Unarmed","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Unarmed.webp","data":{"isproficient":false,"skill":"Weapon - Unarmed","qualities":"","flaws":"Undamaging","damage":"Bludgeoning","isranged":false,"range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Unarmed
\n\n
As an UNDAMAGING attack the maximum Result is +2.
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"JXK1qP9uqlxvcnxB","name":"2-H Club","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Club.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Club","qualities":"","flaws":"","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"2-H Club
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"LATr6R7cNOtYJgaO","name":"Hammer (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hammer.webp","data":{"isproficient":false,"skill":"Weapon - Hammer (Melee)","qualities":"","flaws":"","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Hammer
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"MpzJvauaq7UKdyi5","name":"Sling","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sling.webp","data":{"isproficient":false,"skill":"Weapon - Sling","qualities":"","flaws":"","damage":"Bludgeoning","isranged":true,"range":"2 Zones","maxrange":"3 Zones","minstr":0,"cost":0,"equipped":false,"description":"Sling
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"PDXDPlqck6VURcGB","name":"2-H Axe","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Axe.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Axe","qualities":"Heavy,Hack","flaws":"","damage":"Slashing","isranged":false,"range":"","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Axe
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"Q4tpJZV4HAsyVAWT","name":"2-H Mace","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Mace.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Hammer","qualities":"Heavy","flaws":"","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Mace
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"QRMIOZHBrauWQjTb","name":"Bite","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Bite.webp","data":{"isproficient":false,"skill":"Weapon - Bite","qualities":"","flaws":"","damage":"Piercing","isranged":false,"range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Bite - natural weapon
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"QzJZr6guDrUjsuTU","name":"Spear (1-H)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Spear.webp","data":{"isproficient":false,"skill":"Weapon - Spear (1-H)","qualities":"Reach","flaws":"","damage":"Piercing","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Spear
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"Sm3Pze2LY6BnoTBq","name":"Mace","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Mace.webp","data":{"isproficient":false,"skill":"Weapon - Mace","qualities":"","flaws":"","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Mace
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"VOg1kpjhJ7h3XsSk","name":"Club","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Club.webp","data":{"isproficient":false,"skill":"Weapon - Club","qualities":"","flaws":"Light","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Club
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"WvqALDHVEVt6TskF","name":"Javelin","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Javelin.webp","data":{"isproficient":false,"skill":"Weapon - Javelin","qualities":"Penetrating","flaws":"","damage":"Piercing","isranged":true,"range":"2 Zones","maxrange":"4 Zones","minstr":0,"cost":0,"equipped":false,"description":"Javelin
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"XTfw2cefPXucQgMG","name":"Crossbow","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Crossbow.webp","data":{"isproficient":false,"skill":"Weapon - Crossbow","qualities":"Penetrating","flaws":"Reload","damage":"Piercing","isranged":true,"range":"3 Zones","maxrange":"5 Zones","minstr":0,"cost":0,"equipped":false,"description":"Crossbow
\nRequires 1 Action to reload after shooting - So you can only shoot every other Action Round.
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"XUAMSiOmPHi1LEHs","name":"2-H Hammer","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Hammer.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Hammer","qualities":"Heavy","flaws":"","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-H Hammer
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"ZfBqMaYjg5z8Kh97","name":"Hand Axe (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hand%20Axe.webp","data":{"isproficient":false,"skill":"Weapon - Hand Axe (Melee)","qualities":"Hack","flaws":"Light","damage":"Slashing","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Hand Axe
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"ZoooviRlvZIQR6d2","name":"Sting","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sting.webp","data":{"isproficient":false,"skill":"Weapon - Sting","qualities":"","flaws":"","damage":"Piercing","isranged":false,"range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Sting - natural weapon
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"cC3xXzzZ8UpDGONs","name":"2-H Sword","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Sword.webp","data":{"isproficient":false,"skill":"Weapon - 2-H Sword","qualities":"Heavy,Reach,Hack","flaws":"","damage":"Slashing","isranged":false,"range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"2-Handed Sword
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"cMMWV7HusxfUfL4E","name":"Flail","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Flail.webp","data":{"isproficient":false,"skill":"Weapon - Flail","qualities":"Entangle","flaws":"Dangerous","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Flail
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"fE5cUHjc5GYGRdty","name":"Spear (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Spear.webp","data":{"isproficient":false,"skill":"Weapon - Spear (Thrown)","qualities":"Penetrating","flaws":"","damage":"Piercing","isranged":true,"range":"2 Zones","maxrange":"3 Zones","minstr":0,"cost":0,"equipped":false,"description":"Spear
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} {"_id":"hR0EtMiIy5ybcS84","name":"Staff (2-H)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Staff.webp","data":{"ability":"str","isproficient":false,"qualities":"Reach","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Staff - always used 2-handed.
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"ivLgdf33xEk9IWAW","name":"Pick","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Pick.webp","data":{"ability":"str","isproficient":false,"qualities":"Penetrating","flaws":"","damage":"Piercing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Pick
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"lH54F6LNWMYg5dNt","name":"Claw","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Claw.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"","damage":"Slashing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Claw - natural weapon
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"mMCl8JZboWUYZgvB","name":"Dagger (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Dagger.webp","data":{"ability":"dex","isproficient":false,"qualities":"","flaws":"Light","damage":"Piercing","range":"1 Zone","maxrange":"2 Zones","minstr":0,"cost":0,"equipped":false,"description":"Dagger
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"oSBtSHos9aQvbhfm","name":"Improvised (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Improvised-_Thrown_.webp","data":{"ability":"dex","isproficient":false,"qualities":"","flaws":"Light","damage":"Bludgeoning","range":"Same Zone","maxrange":"1 Zone","minstr":0,"cost":0,"equipped":false,"description":"An Improvised ranged weapon such as a bottle or a rock.
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"qz2f2DO4HOZFrv2k","name":"Spear (2-H)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Spear.webp","data":{"ability":"agi","isproficient":false,"qualities":"Heavy,Reach,Penetrating","flaws":"","damage":"Piercing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Spear, used with both hands.
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"u4vvzNFSNluNdyn0","name":"Bow","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Bow.webp","data":{"ability":"dex","isproficient":false,"qualities":"Penetrating","flaws":"","damage":"Piercing","range":"4 Zones","maxrange":"6 Zones","minstr":0,"cost":0,"equipped":false,"description":"Bow with arrows
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"name":"Gore","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Gore.webp","data":{"ability":"agi","isproficient":false,"qualities":"Heavy","flaws":"","damage":"Piercing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Horns
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.h3ezFIKi5PR1POfT"}},"_id":"uCxCoRfH7KwVRt8d"} -{"_id":"uJs7IdVvomKVXlV9","name":"Improvised (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Improvised.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"Light","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"An Improvised melee weapon such as a broken bottle, a chair leg, or a stick.
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} -{"_id":"x6wkZiE2G2QP41S2","name":"Sword","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sword.webp","data":{"ability":"agi","isproficient":false,"qualities":"Deadly","flaws":"","damage":"Slashing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Sword
"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"ivLgdf33xEk9IWAW","name":"Pick","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Pick.webp","data":{"isproficient":false,"skill":"Weapon - Pick","qualities":"Penetrating","flaws":"","damage":"Piercing","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Pick
","ability":"str"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"lH54F6LNWMYg5dNt","name":"Claw","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Claw.webp","data":{"isproficient":false,"skill":"Weapon - Claw","qualities":"","flaws":"","damage":"Slashing","isranged":false,"range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Claw - natural weapon
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"mMCl8JZboWUYZgvB","name":"Dagger (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Dagger.webp","data":{"isproficient":false,"skill":"Weapon - Dagger (Thrown)","qualities":"","flaws":"Light","damage":"Piercing","isranged":true,"range":"1 Zone","maxrange":"2 Zones","minstr":0,"cost":0,"equipped":false,"description":"Dagger
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"oSBtSHos9aQvbhfm","name":"Improvised (Thrown)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Improvised-_Thrown_.webp","data":{"isproficient":false,"skill":"Weapon - Improvised (Thrown)","qualities":"","flaws":"Light","damage":"Bludgeoning","isranged":true,"range":"Same Zone","maxrange":"1 Zone","minstr":0,"cost":0,"equipped":false,"description":"An Improvised ranged weapon such as a bottle or a rock.
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"qz2f2DO4HOZFrv2k","name":"Spear (2-H)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Spear.webp","data":{"isproficient":false,"skill":"Weapon - Spear (2-H)","qualities":"Heavy,Reach,Penetrating","flaws":"","damage":"Piercing","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Spear, used with both hands.
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"u4vvzNFSNluNdyn0","name":"Bow","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Bow.webp","data":{"isproficient":false,"skill":"Weapon - Bow","qualities":"Penetrating","flaws":"","damage":"Piercing","isranged":true,"range":"4 Zones","maxrange":"6 Zones","minstr":0,"cost":0,"equipped":false,"description":"Bow with arrows
","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"uCxCoRfH7KwVRt8d","name":"Gore","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Gore.webp","data":{"isproficient":false,"skill":"Weapon - Gore","qualities":"Heavy","flaws":"","damage":"Piercing","isranged":false,"range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Horns
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.h3ezFIKi5PR1POfT"}}} +{"_id":"uJs7IdVvomKVXlV9","name":"Improvised (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Improvised.webp","data":{"isproficient":false,"skill":"Weapon - Improvised (Melee)","qualities":"","flaws":"Light","damage":"Bludgeoning","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"An Improvised melee weapon such as a broken bottle, a chair leg, or a stick.
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} +{"_id":"x6wkZiE2G2QP41S2","name":"Sword","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sword.webp","data":{"isproficient":false,"skill":"Weapon - Sword","qualities":"Deadly","flaws":"","damage":"Slashing","isranged":false,"range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"Sword
","ability":"agi"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}} diff --git a/system.json b/system.json index cb673fb..54d27e6 100644 --- a/system.json +++ b/system.json @@ -1,6 +1,7 @@ { - "author": "Uberwald", - "compatibleCoreVersion": "9", + "authors": [ + {"name": "Uberwald"} + ], "description": "Crucible RPG system for FoundryVTT", "esmodules": [ "modules/crucible-main.js" @@ -16,13 +17,11 @@ ], "library": false, "license": "LICENSE.txt", - "manifestPlusVersion": "1.0.0", "media": [], - "minimumCoreVersion": "0.8.0", "name": "fvtt-crucible-rpg", "packs": [ { - "entity": "Item", + "type": "Item", "label": "Armors", "name": "armor", "path": "./packs/armor.db", @@ -32,7 +31,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Equipments", "name": "equipment", "path": "./packs/equipment.db", @@ -42,7 +41,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Shields", "name": "shields", "path": "./packs/shields.db", @@ -52,7 +51,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Weapons", "name": "weapons", "path": "./packs/weapons.db", @@ -62,7 +61,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Conditions", "name": "conditions", "path": "./packs/conditions.db", @@ -72,7 +71,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Currency", "name": "currency", "path": "./packs/currency.db", @@ -82,7 +81,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Lore - Air", "name": "lore-air", "path": "./packs/lore-air.db", @@ -92,7 +91,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Lore - Earth", "name": "lore-earth", "path": "./packs/lore-earth.db", @@ -102,7 +101,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Lore - Fire", "name": "lore-fire", "path": "./packs/lore-fire.db", @@ -112,7 +111,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Lore - Water", "name": "lore-water", "path": "./packs/lore-water.db", @@ -122,7 +121,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Lore - Shadow", "name": "lore-shadow", "path": "./packs/lore-shadow.db", @@ -132,7 +131,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Skills", "name": "skills", "path": "./packs/skills.db", @@ -142,7 +141,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Feats", "name": "feats", "path": "./packs/feats.db", @@ -152,7 +151,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Poisons", "name": "poisons", "path": "./packs/poisons.db", @@ -162,7 +161,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Powers - Class", "name": "classpowers", "path": "./packs/classpowers.db", @@ -172,7 +171,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Tricks & Traps", "name": "trickstraps", "path": "./packs/trickstraps.db", @@ -182,7 +181,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Action Tokens", "name": "action-tokens", "path": "./packs/action-tokens.db", @@ -192,7 +191,7 @@ ] }, { - "entity": "Item", + "type": "Item", "label": "Powers - Monsters", "name": "monster-powers", "path": "./packs/monster-powers.db", @@ -202,7 +201,7 @@ ] }, { - "entity": "RollTable", + "type": "RollTable", "label": "Rolltables", "name": "rolltables", "path": "./packs/rolltables.db", @@ -218,11 +217,16 @@ "styles": [ "styles/simple.css" ], - "templateVersion": 16, + "version": "10.0.1", + "compatibility": { + "minimum": "10", + "verified": "10.276", + "maximum": "10" + }, + "templateVersion": 18, "title": "Crucible RPG", "manifest": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/raw/master/system.json", - "download": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/archive/fvtt-crucible-rpg-v0.1.29.zip", + "download": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/archive/fvtt-crucible-rpg-v10.0.0.zip", "url": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg", - "version": "0.1.29", "background" : "./images/ui/crucible_welcome_page.webp" } diff --git a/template.json b/template.json index 697a6e9..7c75699 100644 --- a/template.json +++ b/template.json @@ -8,6 +8,7 @@ "age": 0, "size": 0, "weight": "", + "height": "", "hair": "", "sex": "", "eyes": "", diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index fc28675..f2eddfe 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -22,7 +22,7 @@