From 8e16c6a7bd79d05cc1a0779fa847696e41d4556c Mon Sep 17 00:00:00 2001 From: LeFrique Date: Fri, 1 Dec 2023 14:37:21 +0100 Subject: [PATCH] Added Operations and Combat Conditions + Added Multiply, Division and Subtract operations for modifiers + Added Combat Conditions Effects form Ars Armorum --- packs/items/kampfzustaende/angeschlagen.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/benommen.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/blutend.json | 22 +++++++++++++++++++ .../kampfzustaende/eingeschuechtert.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/ermutigt.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/erschoepft.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/erzuernt.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/lahm.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/taumelnd.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/ueberrascht.json | 22 +++++++++++++++++++ packs/items/kampfzustaende/verwirrt.json | 22 +++++++++++++++++++ source/module/M5Base.ts | 3 +++ source/module/actors/M5ModAggregate.ts | 21 ++++++++++++++++++ source/system.json | 7 ++++++ 14 files changed, 273 insertions(+) create mode 100644 packs/items/kampfzustaende/angeschlagen.json create mode 100644 packs/items/kampfzustaende/benommen.json create mode 100644 packs/items/kampfzustaende/blutend.json create mode 100644 packs/items/kampfzustaende/eingeschuechtert.json create mode 100644 packs/items/kampfzustaende/ermutigt.json create mode 100644 packs/items/kampfzustaende/erschoepft.json create mode 100644 packs/items/kampfzustaende/erzuernt.json create mode 100644 packs/items/kampfzustaende/lahm.json create mode 100644 packs/items/kampfzustaende/taumelnd.json create mode 100644 packs/items/kampfzustaende/ueberrascht.json create mode 100644 packs/items/kampfzustaende/verwirrt.json diff --git a/packs/items/kampfzustaende/angeschlagen.json b/packs/items/kampfzustaende/angeschlagen.json new file mode 100644 index 0000000..aea4fa8 --- /dev/null +++ b/packs/items/kampfzustaende/angeschlagen.json @@ -0,0 +1,22 @@ +{ + "name": "Angeschlagen", + "type": "effect", + "img": "icons/tools/instruments/injury-pain-body-orange.web", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "movement", "operation": "division", "value": 2 }, "1": { "type": "stat", "id": "ap.max", "operation": "division", "value": 2 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz4", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/benommen.json b/packs/items/kampfzustaende/benommen.json new file mode 100644 index 0000000..f2b1c8f --- /dev/null +++ b/packs/items/kampfzustaende/benommen.json @@ -0,0 +1,22 @@ +{ + "name": "Benommen", + "type": "effect", + "img": "icons/tools/instruments/hypnosis-mesmerism-eye.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "subtract", "value": 4 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYzY", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} \ No newline at end of file diff --git a/packs/items/kampfzustaende/blutend.json b/packs/items/kampfzustaende/blutend.json new file mode 100644 index 0000000..9cca085 --- /dev/null +++ b/packs/items/kampfzustaende/blutend.json @@ -0,0 +1,22 @@ +{ + "name": "Blutend", + "type": "effect", + "img": "icons/tools/instruments/blood-drip-droplet-red.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "lp", "operation": "subtract", "value": 1 }, "1": { "type": "stat", "id": "ap", "operation": "subtract", "value": 1 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz5", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/eingeschuechtert.json b/packs/items/kampfzustaende/eingeschuechtert.json new file mode 100644 index 0000000..71b8420 --- /dev/null +++ b/packs/items/kampfzustaende/eingeschuechtert.json @@ -0,0 +1,22 @@ +{ + "name": "Eingeschüchtert", + "type": "effect", + "img": "icons/tools/instruments/fear-fright-white.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "add", "value": 4 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYzZ", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/ermutigt.json b/packs/items/kampfzustaende/ermutigt.json new file mode 100644 index 0000000..32d79bd --- /dev/null +++ b/packs/items/kampfzustaende/ermutigt.json @@ -0,0 +1,22 @@ +{ + "name": "Ermutigt", + "type": "effect", + "img": "icons/tools/instruments/strike-fist-stone-light.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "add", "value": 1 }, "1": { "type": "stat", "id": "attackBonus", "operation": "add", "value": 1 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYzX", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/erschoepft.json b/packs/items/kampfzustaende/erschoepft.json new file mode 100644 index 0000000..5e99afc --- /dev/null +++ b/packs/items/kampfzustaende/erschoepft.json @@ -0,0 +1,22 @@ +{ + "name": "Erschöpft", + "type": "effect", + "img": "icons/tools/instruments/injury-body-pain-gray.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "subtract", "value": 4 }, "1": { "type": "stat", "id": "attackBonus", "operation": "subtract", "value": 4 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz7", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/erzuernt.json b/packs/items/kampfzustaende/erzuernt.json new file mode 100644 index 0000000..6f65726 --- /dev/null +++ b/packs/items/kampfzustaende/erzuernt.json @@ -0,0 +1,22 @@ +{ + "name": "Erzürnt", + "type": "effect", + "img": "icons/tools/instruments/fear-fright-monster-grin-red-orange.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "subtract", "value": 2 }, "1": { "type": "stat", "id": "attackBonus", "operation": "add", "value": 2 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz3", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/lahm.json b/packs/items/kampfzustaende/lahm.json new file mode 100644 index 0000000..96373dc --- /dev/null +++ b/packs/items/kampfzustaende/lahm.json @@ -0,0 +1,22 @@ +{ + "name": "Lahm", + "type": "effect", + "img": "icons/tools/instruments/feet-spurred-boots-brown.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "movement", "operation": "division", "value": 2 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz0", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/taumelnd.json b/packs/items/kampfzustaende/taumelnd.json new file mode 100644 index 0000000..461ede3 --- /dev/null +++ b/packs/items/kampfzustaende/taumelnd.json @@ -0,0 +1,22 @@ +{ + "name": "Taumelnd", + "type": "effect", + "img": "icons/tools/instruments/silhouette-fall-slip-prone.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "subtract", "value": 2 }, "1": { "type": "stat", "id": "attackBonus", "operation": "sub", "value": 2 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz1", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/ueberrascht.json b/packs/items/kampfzustaende/ueberrascht.json new file mode 100644 index 0000000..9bc441c --- /dev/null +++ b/packs/items/kampfzustaende/ueberrascht.json @@ -0,0 +1,22 @@ +{ + "name": "Überrascht", + "type": "effect", + "img": "icons/tools/instruments/silhouette-hold-change-green.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "defenseBonus", "operation": "subtract", "value": 4 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz2", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/packs/items/kampfzustaende/verwirrt.json b/packs/items/kampfzustaende/verwirrt.json new file mode 100644 index 0000000..5183538 --- /dev/null +++ b/packs/items/kampfzustaende/verwirrt.json @@ -0,0 +1,22 @@ +{ + "name": "Lahm", + "type": "effect", + "img": "icons/tools/instruments/silhouette-grow-shrink-blue.webp", + "system": { + "description": "", + "equippable": false, + "equipped": true, + "value": 0, + "magic": false, + "rolls": { "formulas": {}, "output": "" }, + "mods": { "0": { "type": "stat", "id": "movement", "operation": "fixed", "value": 0 } }, + "calc": {} + }, + "effects": [], + "flags": {}, + "_stats": { "systemId": "midgard5", "systemVersion": "1.2.1", "coreVersion": "10.312", "createdTime": 1700349805056, "modifiedTime": 1700353901248, "lastModifiedBy": "cb3PEvEU0kHkMdjb" }, + "_id": "PJ0tqjZXQ5opcYz6", + "folder": null, + "sort": 0, + "ownership": { "default": 0, "cb3PEvEU0kHkMdjb": 3 } +} diff --git a/source/module/M5Base.ts b/source/module/M5Base.ts index 72973f8..a0d5c57 100644 --- a/source/module/M5Base.ts +++ b/source/module/M5Base.ts @@ -95,6 +95,9 @@ export enum M5ModOperation { ADD = "add", SET = "set", FIXED = "fixed", + MULTIPLY = "multiply", + SUBTRACT = "subtract", + DIVISION = "division", } export interface M5ItemMod { diff --git a/source/module/actors/M5ModAggregate.ts b/source/module/actors/M5ModAggregate.ts index f3ec131..ff59ce4 100644 --- a/source/module/actors/M5ModAggregate.ts +++ b/source/module/actors/M5ModAggregate.ts @@ -126,6 +126,27 @@ export default class M5ModAggregate { const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0); ret.value = Math.max(0, ret.value + bonus); } + + mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.SUBTRACT); + if (mods.length !== 0) { + ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); + const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a - b, 0); + ret.value = Math.max(0, ret.value + bonus); + } + + mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.MULTIPLY); + if (mods.length !== 0) { + ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); + const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a * b, 0); + ret.value = Math.max(0, ret.value + bonus); + } + + mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.DIVISION); + if (mods.length !== 0) { + ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); + const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a / b, 0); + ret.value = Math.max(0, ret.value + bonus); + } } return ret; diff --git a/source/system.json b/source/system.json index 56ef917..541d0dd 100644 --- a/source/system.json +++ b/source/system.json @@ -48,6 +48,13 @@ "path": "./packs/items/ausrustung.db", "type": "Item" }, + { + "name": "kampfzustaende", + "label": "Kampfzustände", + "system": "midgard5", + "path": "./packs/items/kampfzustaende.db", + "type": "Item" + }, { "name": "waffenkammer", "label": "Waffenkammer",