18 add more operations for modifiers (#23)

* Added Operations and Combat Conditions

+ Added Multiply, Division and Subtract operations for modifiers
+ Added Combat Conditions Effects form Ars Armorum

* Added Math.floor()

* Fixed Operations and Combat Conditions
This commit is contained in:
LeFrique 2023-12-01 19:04:58 +01:00 committed by GitHub
parent 725dd8c504
commit 6ff4f16f9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 25 additions and 18 deletions

View File

@ -275,6 +275,10 @@
"midgard5.mod-operation-add": "Addieren", "midgard5.mod-operation-add": "Addieren",
"midgard5.mod-operation-set": "Basiswert", "midgard5.mod-operation-set": "Basiswert",
"midgard5.mod-operation-fixed": "Fester Wert", "midgard5.mod-operation-fixed": "Fester Wert",
"midgard5.mod-operation-subtract": "Subtrahieren",
"midgard5.mod-operation-multiply": "Multiplizieren",
"midgard5.mod-operation-division": "Dividieren",
"midgard5.mod-stat-defenseBonus": "Abwehrbonus", "midgard5.mod-stat-defenseBonus": "Abwehrbonus",
"midgard5.mod-stat-attackBonus": "Angriffsbonus", "midgard5.mod-stat-attackBonus": "Angriffsbonus",

View File

@ -1,7 +1,7 @@
{ {
"name": "Angeschlagen", "name": "Angeschlagen",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/injury-pain-body-orange.web", "img": "icons/skills/wounds/injury-pain-body-orange.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Benommen", "name": "Benommen",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/hypnosis-mesmerism-eye.webp", "img": "icons/magic/control/hypnosis-mesmerism-eye.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Blutend", "name": "Blutend",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/blood-drip-droplet-red.webp", "img": "icons/skills/wounds/blood-drip-droplet-red.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Eingeschüchtert", "name": "Eingeschüchtert",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/fear-fright-white.webp", "img": "icons/magic/control/fear-fright-white.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Ermutigt", "name": "Ermutigt",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/strike-fist-stone-light.webp", "img": "icons/magic/earth/strike-fist-stone-light.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Erschöpft", "name": "Erschöpft",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/injury-body-pain-gray.webp", "img": "icons/skills/wounds/injury-body-pain-gray.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Erzürnt", "name": "Erzürnt",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/fear-fright-monster-grin-red-orange.webp", "img": "icons/magic/control/fear-fright-monster-grin-red-orange.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Lahm", "name": "Lahm",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/feet-spurred-boots-brown.webp", "img": "icons/skills/movement/feet-spurred-boots-brown.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Taumelnd", "name": "Taumelnd",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/silhouette-fall-slip-prone.webp", "img": "icons/magic/control/silhouette-fall-slip-prone.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Überrascht", "name": "Überrascht",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/silhouette-hold-change-green.webp", "img": "icons/magic/control/silhouette-hold-change-green.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -1,7 +1,7 @@
{ {
"name": "Lahm", "name": "Verwirrt",
"type": "effect", "type": "effect",
"img": "icons/tools/instruments/silhouette-grow-shrink-blue.webp", "img": "icons/magic/control/silhouette-grow-shrink-blue.webp",
"system": { "system": {
"description": "", "description": "",
"equippable": false, "equippable": false,

View File

@ -130,22 +130,22 @@ export default class M5ModAggregate {
mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.SUBTRACT); mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.SUBTRACT);
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a - b, 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0);
ret.value = Math.max(0, ret.value + bonus); ret.value = Math.max(0, ret.value - bonus);
} }
mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.MULTIPLY); mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.MULTIPLY);
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a * b, 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0);
ret.value = Math.max(0, ret.value + bonus); ret.value = Math.max(0, ret.value * bonus);
} }
mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.DIVISION); mods = arr.filter((pair) => pair.mod.operation === M5ModOperation.DIVISION);
if (mods.length !== 0) { if (mods.length !== 0) {
ret.mods = ret.mods.concat(mods.map(this.pairAsSource)); ret.mods = ret.mods.concat(mods.map(this.pairAsSource));
const bonus = mods.map((p) => p.mod.value).reduce((a, b) => Math.floor(a / b), 0); const bonus = mods.map((p) => p.mod.value).reduce((a, b) => a + b, 0);
ret.value = Math.max(0, ret.value + bonus); ret.value = Math.max(0, Math.floor(ret.value / bonus));
} }
} }

View File

@ -40,6 +40,9 @@
<option value="add">{{localize "midgard5.mod-operation-add"}}</option> <option value="add">{{localize "midgard5.mod-operation-add"}}</option>
<option value="set">{{localize "midgard5.mod-operation-set"}}</option> <option value="set">{{localize "midgard5.mod-operation-set"}}</option>
<option value="fixed">{{localize "midgard5.mod-operation-fixed"}}</option> <option value="fixed">{{localize "midgard5.mod-operation-fixed"}}</option>
<option value="subtract">{{localize "midgard5.mod-operation-subtract"}}</option>
<option value="multiply">{{localize "midgard5.mod-operation-multiply"}}</option>
<option value="division">{{localize "midgard5.mod-operation-division"}}</option>
{{/select}} {{/select}}
</select> </select>
</td> </td>