From 4198bf82be62bf3a4827680a648a7291f1890aa4 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Sat, 18 Jan 2025 19:26:14 +0100 Subject: [PATCH] Combat initiativ --- module/applications/combat.mjs | 15 ++++++++++++++- module/documents/roll.mjs | 14 ++++++++++---- module/models/monster.mjs | 10 +++------- .../lf-equipment/{000076.log => 000084.log} | 0 packs-system/lf-equipment/CURRENT | 2 +- packs-system/lf-equipment/LOG | 16 ++++++++-------- packs-system/lf-equipment/LOG.old | 16 ++++++++-------- packs-system/lf-equipment/MANIFEST-000074 | Bin 137 -> 0 bytes packs-system/lf-equipment/MANIFEST-000082 | Bin 0 -> 137 bytes .../lf-gifts/{000076.log => 000084.log} | 0 packs-system/lf-gifts/CURRENT | 2 +- packs-system/lf-gifts/LOG | 16 ++++++++-------- packs-system/lf-gifts/LOG.old | 16 ++++++++-------- packs-system/lf-gifts/MANIFEST-000074 | Bin 136 -> 0 bytes packs-system/lf-gifts/MANIFEST-000082 | Bin 0 -> 136 bytes .../lf-skills/{000076.log => 000084.log} | 0 packs-system/lf-skills/CURRENT | 2 +- packs-system/lf-skills/LOG | 16 ++++++++-------- packs-system/lf-skills/LOG.old | 16 ++++++++-------- packs-system/lf-skills/MANIFEST-000074 | Bin 137 -> 0 bytes packs-system/lf-skills/MANIFEST-000082 | Bin 0 -> 137 bytes .../{000076.log => 000084.log} | 0 packs-system/lf-vulnerabilities/CURRENT | 2 +- packs-system/lf-vulnerabilities/LOG | 16 ++++++++-------- packs-system/lf-vulnerabilities/LOG.old | 16 ++++++++-------- .../{MANIFEST-000074 => MANIFEST-000082} | Bin 137 -> 137 bytes system.json | 2 +- templates/combat-tracker.hbs | 7 ++++++- 28 files changed, 102 insertions(+), 82 deletions(-) rename packs-system/lf-equipment/{000076.log => 000084.log} (100%) delete mode 100644 packs-system/lf-equipment/MANIFEST-000074 create mode 100644 packs-system/lf-equipment/MANIFEST-000082 rename packs-system/lf-gifts/{000076.log => 000084.log} (100%) delete mode 100644 packs-system/lf-gifts/MANIFEST-000074 create mode 100644 packs-system/lf-gifts/MANIFEST-000082 rename packs-system/lf-skills/{000076.log => 000084.log} (100%) delete mode 100644 packs-system/lf-skills/MANIFEST-000074 create mode 100644 packs-system/lf-skills/MANIFEST-000082 rename packs-system/lf-vulnerabilities/{000076.log => 000084.log} (100%) rename packs-system/lf-vulnerabilities/{MANIFEST-000074 => MANIFEST-000082} (73%) diff --git a/module/applications/combat.mjs b/module/applications/combat.mjs index 04efef4..678cf62 100644 --- a/module/applications/combat.mjs +++ b/module/applications/combat.mjs @@ -7,6 +7,7 @@ export class LethalFantasyCombatTracker extends CombatTracker { for (let u of data.turns) { let c = game.combat.combatants.get(u.id); u.progressionCount = c.system.progressionCount + u.isMonster = c.actor.type === "monster" } console.log("Combat Data", data); return data; @@ -107,7 +108,19 @@ export class LethalFantasyCombat extends Combat { let advanceTime = Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime; advanceTime += CONFIG.time.roundTime; let nextRound = this.round + 1; - + + let initOK = true; + for (let c of this.combatants) { + if (c.initiative === null) { + initOK = false; + break; + } + } + if (!initOK) { + ui.notifications.error("All combatants must have initiative rolled before the round can advance."); + return this; + } + for (let c of this.combatants) { if ( nextRound >= c.initiative) { c.update({ 'system.progressionCount': c.system.progressionCount + 1 }); diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index d9ed10f..df93c8e 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -565,8 +565,10 @@ export default class LethalFantasyRoll extends Roll { }, { action: "cancel", - label: "Other action, no weapon progression dice", - callback: (event, button, dialog) => { return null; } + label: "Other action, no progression dice", + callback: (event, button, dialog) => { + return null; + } } ], rejectClose: false // Click on Close button will not launch an error @@ -574,12 +576,16 @@ export default class LethalFantasyRoll extends Roll { console.log("RollContext", rollContext) if (rollContext === null || !rollContext?.progressionDiceId) { + let combat = game.combats.get(options.combatId) + let combatant = combat.combatants.get(options.combatantId) + combatant.update({ 'system.progressionCount': 1 }) return } // Get the weapons from the actor items let actor = game.actors.get(options.actorId) let weapon = actor.items.find(i => i.type === "weapon" && i.id === rollContext.progressionDiceId) + let isMonster = actor.type === "monster" // Get the dice and roll it let formula = weapon.system.combatProgressionDice let roll = new Roll(formula) @@ -592,7 +598,7 @@ export default class LethalFantasyRoll extends Roll { if (roll.total <= max ) { // Notify that the player can act now with a chat message - let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOK", { name: actor.name, weapon: weapon.name, roll: roll.total }) + let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOK", { isMonster, name: actor.name, weapon: weapon.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) // Update the combatant progression count let combat = game.combats.get(options.combatId) @@ -600,7 +606,7 @@ export default class LethalFantasyRoll extends Roll { combatant.update({ 'system.progressionCount': 0 }) } else { // Notify that the player cannot act now with a chat message - let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKO", { name: actor.name, weapon: weapon.name, roll: roll.total }) + let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKO", { isMonster, name: actor.name, weapon: weapon.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) }) } } diff --git a/module/models/monster.mjs b/module/models/monster.mjs index b5b9bc0..7886bce 100644 --- a/module/models/monster.mjs +++ b/module/models/monster.mjs @@ -173,7 +173,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel let roll = new Roll("1D8") await roll.evaluate() let max = rollProgressionCount - let msg = await roll.toMessage({ flavor: `Progression Roll for ${this.parent.name}, progression count : ${rollProgressionCount}/${max}` } ) + let msg = await roll.toMessage({ flavor: `Progression Roll for ${this.parent.name}` } ) await game.dice3d.waitFor3DAnimationByMessageID(msg.id) let hasAttack = false @@ -181,16 +181,12 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel let attack = this.attacks[key] if (attack.attackScore > 0 && attack.attackScore === roll.total) { hasAttack = true - let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOK", { name: this.parent.name, weapon: attack.name, roll: roll.total }) + let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOKMonster", { isMonster: true, name: this.parent.name, weapon: attack.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) }) - // Update the combatant progression count - let combat = game.combats.get(combatId) - let combatant = combat.combatants.get(combatantId) - combatant.update({ 'system.progressionCount': 0 }) } } if (!hasAttack) { - let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKO", { name: this.parent.name, roll: roll.total }) + let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKOMonster", { isMonster: true, name: this.parent.name, roll: roll.total }) ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) }) } diff --git a/packs-system/lf-equipment/000076.log b/packs-system/lf-equipment/000084.log similarity index 100% rename from packs-system/lf-equipment/000076.log rename to packs-system/lf-equipment/000084.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index f8d57cc..d4b9a0f 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000074 +MANIFEST-000082 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index 5ec3c79..4abe1d9 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,8 +1,8 @@ -2025/01/17-19:47:11.164832 7f3b911f96c0 Recovering log #72 -2025/01/17-19:47:11.212359 7f3b911f96c0 Delete type=3 #70 -2025/01/17-19:47:11.212431 7f3b911f96c0 Delete type=0 #72 -2025/01/17-23:59:30.263234 7f3b8b3ff6c0 Level-0 table #77: started -2025/01/17-23:59:30.263263 7f3b8b3ff6c0 Level-0 table #77: 0 bytes OK -2025/01/17-23:59:30.269621 7f3b8b3ff6c0 Delete type=0 #75 -2025/01/17-23:59:30.282079 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) -2025/01/17-23:59:30.282123 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) +2025/01/18-18:45:51.397204 7f3b8bfff6c0 Recovering log #80 +2025/01/18-18:45:51.459450 7f3b8bfff6c0 Delete type=3 #78 +2025/01/18-18:45:51.459524 7f3b8bfff6c0 Delete type=0 #80 +2025/01/18-19:25:39.662101 7f3b8b3ff6c0 Level-0 table #85: started +2025/01/18-19:25:39.662133 7f3b8b3ff6c0 Level-0 table #85: 0 bytes OK +2025/01/18-19:25:39.686749 7f3b8b3ff6c0 Delete type=0 #83 +2025/01/18-19:25:39.734023 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) +2025/01/18-19:25:39.734056 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index 6ee7e63..af34f3f 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,8 +1,8 @@ -2025/01/16-23:12:53.401299 7ffb067fc6c0 Recovering log #68 -2025/01/16-23:12:53.411672 7ffb067fc6c0 Delete type=3 #66 -2025/01/16-23:12:53.411749 7ffb067fc6c0 Delete type=0 #68 -2025/01/17-07:54:26.962616 7ff867fff6c0 Level-0 table #73: started -2025/01/17-07:54:26.962692 7ff867fff6c0 Level-0 table #73: 0 bytes OK -2025/01/17-07:54:26.994859 7ff867fff6c0 Delete type=0 #71 -2025/01/17-07:54:27.074108 7ff867fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) -2025/01/17-07:54:27.074173 7ff867fff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) +2025/01/18-09:15:00.143272 7f3b909f86c0 Recovering log #76 +2025/01/18-09:15:00.153506 7f3b909f86c0 Delete type=3 #74 +2025/01/18-09:15:00.153575 7f3b909f86c0 Delete type=0 #76 +2025/01/18-15:51:00.716946 7f3b8b3ff6c0 Level-0 table #81: started +2025/01/18-15:51:00.716985 7f3b8b3ff6c0 Level-0 table #81: 0 bytes OK +2025/01/18-15:51:00.727010 7f3b8b3ff6c0 Delete type=0 #79 +2025/01/18-15:51:00.756449 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) +2025/01/18-15:51:00.756506 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zFrygJ2TnrxchBai' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/MANIFEST-000074 b/packs-system/lf-equipment/MANIFEST-000074 deleted file mode 100644 index e9a46fea30afeb21f0fb4a3866a394559f26ee44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmaEU;D&1o10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei1v9>GB7Rii&CZIVq_{ z#fpw0MV94J8R@2_Az>le#lDPU3}7Iym|2pVTdY{+R#chpWfYQERFRzFl$gn=36YQ4 ewM>(Pfsx6ZlY!ZX#Wgc@-4hVk2gvnfaRmS_CntLV diff --git a/packs-system/lf-equipment/MANIFEST-000082 b/packs-system/lf-equipment/MANIFEST-000082 new file mode 100644 index 0000000000000000000000000000000000000000..2c315b73b403669807ea81545e8506084811597f GIT binary patch literal 137 zcmaEU;D&1o10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei1v9>GB7Rii&CZIVq_{ z#fpw0MV94J8R@2_Az>le#lDPU3}7Iym|2pVTdY{+R#chpWfYQERFRzFl$gn=36W2G edUFE@10z!~Cj)Z`i)*ph!(0$I1jr3zaRmTIk|;$0 literal 0 HcmV?d00001 diff --git a/packs-system/lf-gifts/000076.log b/packs-system/lf-gifts/000084.log similarity index 100% rename from packs-system/lf-gifts/000076.log rename to packs-system/lf-gifts/000084.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index f8d57cc..d4b9a0f 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000074 +MANIFEST-000082 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index 59f77fb..e0436ef 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,8 +1,8 @@ -2025/01/17-19:47:11.219943 7f3b919fa6c0 Recovering log #72 -2025/01/17-19:47:11.271701 7f3b919fa6c0 Delete type=3 #70 -2025/01/17-19:47:11.271773 7f3b919fa6c0 Delete type=0 #72 -2025/01/17-23:59:30.276140 7f3b8b3ff6c0 Level-0 table #77: started -2025/01/17-23:59:30.276162 7f3b8b3ff6c0 Level-0 table #77: 0 bytes OK -2025/01/17-23:59:30.281988 7f3b8b3ff6c0 Delete type=0 #75 -2025/01/17-23:59:30.282094 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) -2025/01/17-23:59:30.282117 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/01/18-18:45:51.461997 7f3b919fa6c0 Recovering log #80 +2025/01/18-18:45:51.515007 7f3b919fa6c0 Delete type=3 #78 +2025/01/18-18:45:51.515089 7f3b919fa6c0 Delete type=0 #80 +2025/01/18-19:25:39.714194 7f3b8b3ff6c0 Level-0 table #85: started +2025/01/18-19:25:39.714225 7f3b8b3ff6c0 Level-0 table #85: 0 bytes OK +2025/01/18-19:25:39.733891 7f3b8b3ff6c0 Delete type=0 #83 +2025/01/18-19:25:39.734043 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/01/18-19:25:39.734069 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index ad98557..03bf5fd 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,8 +1,8 @@ -2025/01/16-23:12:53.414138 7ffb04ff96c0 Recovering log #68 -2025/01/16-23:12:53.424560 7ffb04ff96c0 Delete type=3 #66 -2025/01/16-23:12:53.424630 7ffb04ff96c0 Delete type=0 #68 -2025/01/17-07:54:27.053199 7ff867fff6c0 Level-0 table #73: started -2025/01/17-07:54:27.053227 7ff867fff6c0 Level-0 table #73: 0 bytes OK -2025/01/17-07:54:27.073980 7ff867fff6c0 Delete type=0 #71 -2025/01/17-07:54:27.074166 7ff867fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) -2025/01/17-07:54:27.074188 7ff867fff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/01/18-09:15:00.156518 7f3b911f96c0 Recovering log #76 +2025/01/18-09:15:00.166540 7f3b911f96c0 Delete type=3 #74 +2025/01/18-09:15:00.166606 7f3b911f96c0 Delete type=0 #76 +2025/01/18-15:51:00.736393 7f3b8b3ff6c0 Level-0 table #81: started +2025/01/18-15:51:00.736420 7f3b8b3ff6c0 Level-0 table #81: 0 bytes OK +2025/01/18-15:51:00.746678 7f3b8b3ff6c0 Delete type=0 #79 +2025/01/18-15:51:00.756477 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) +2025/01/18-15:51:00.756525 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/MANIFEST-000074 b/packs-system/lf-gifts/MANIFEST-000074 deleted file mode 100644 index 8526744f8d10c4aaa7dd030c292864e283a1d475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmZQ=x?Pvdz{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&PL2x}i)_F)cqQCAFwn zu`(dsy{y8+E6K&rBP=*Cl2L&H4CECvOHy--6|1t!+;g&ue6mf0i!+=pT^Ly)@`r`pgoS$2eSd>_jU&PL2x}i)_F)cqQCAFwn zu`(dsy{y8+E6K&rBP=*Cl2L&H4CECvOHy--6|1t!+;g&ue6mf0i!+=pT^Ly)@;hyH c7jrN$G6i!oFo&=xoOz_00pf-LxnV2{0A^?|~sfEmtw+^*Rm)My6m+2IdeJncnY@vO(MsAUBLf1_03M31a{N delta 37 pcmeBV>|~sfE!Wh(K%Ikuk;$8rf!T*eX1dCZM {{/if}} - {{this.progressionCount}} + + {{#if this.isMonster}} + - + {{else}} + {{this.progressionCount}} + {{/if}} {{/each}}