diff --git a/src/module/combat/combat-tracker.js b/src/module/combat/combat-tracker.js index 9277600f..e01ff478 100644 --- a/src/module/combat/combat-tracker.js +++ b/src/module/combat/combat-tracker.js @@ -238,6 +238,14 @@ calculateEncounterDifficulty(combatants) { } } + const trackerHeader = html.querySelector(".combat-tracker-header") + if (this.initiativeMethod === 's') { + if (game.combat?.turn === null) + trackerHeader.innerHTML = trackerHeader.innerHTML + `
${game.i18n.localize('DL.TurnChooseTurn')}
` + else + trackerHeader.innerHTML = trackerHeader.innerHTML + `
 
` + } + html.querySelectorAll('.combatant')?.forEach(el => { // For each combatant in the tracker, change the initiative selector const combId = el.getAttribute('data-combatant-id') @@ -246,6 +254,8 @@ calculateEncounterDifficulty(combatants) { if (this.initiativeMethod === 's' && !game.modules.get('lancer-initiative').active) { const multipleCombatants = game.combat.getCombatantsByToken(combatant.token) + const title = (game.user.isGM || combatant.actor.isOwner) && game.combat?.turn === null ? i18n('DL.TurnChangeTurn') : '' + const style = (game.user.isGM || combatant.actor.isOwner) && game.combat?.turn === null ? 'font-weight: bold; cursor: pointer;' : 'font-weight: normal; cursor: auto; opacity: 0.5;' if (combatant.actor?.system.fastAndSlowTurn && multipleCombatants.length == 2) { // The combatant has a double initiative, so we display "Fast" and "Slow" @@ -261,7 +271,7 @@ calculateEncounterDifficulty(combatants) { : game.i18n.localize('DL.TurnSlow') // Change initiative by clicking on the name - el.getElementsByClassName('token-initiative')[0].innerHTML = `${init}` + el.getElementsByClassName('token-initiative')[0].innerHTML = `${init}` } } @@ -359,7 +369,7 @@ calculateEncounterDifficulty(combatants) { const combatant = combatants.get(combId) if (!combatant) return - if (game.user.isGM || combatant.actor.isOwner) { + if (game.user.isGM || combatant.actor.isOwner && game.combat?.turn === null) { await combatant.actor.update({'system.fastturn': !combatant.actor.system.fastturn}) const initChatMessage = await createInitChatMessage(combatant, {}) if (initChatMessage) ChatMessage.create(initChatMessage) diff --git a/src/module/combat/combat.js b/src/module/combat/combat.js index 46c4c575..5dab69db 100644 --- a/src/module/combat/combat.js +++ b/src/module/combat/combat.js @@ -273,6 +273,8 @@ async rollInitiativeGroup(ids, { formula = null, updateTurn = true, messageOptio /** @override */ async nextTurn() { + const combatant = game.combat.combatants.get(game.combat.current.combatantId) + if (combatant) combatant.setFlag('demonlord', 'hasActed', true) const _updatedTurn = await super.nextTurn() await this._handleTurnEffects() await this.allowTurnOrderChangeInTurns(_updatedTurn) @@ -297,6 +299,9 @@ async rollInitiativeGroup(ids, { formula = null, updateTurn = true, messageOptio } }) } + for (let combatant of game.combat.combatants) { + await combatant.setFlag('demonlord', 'hasActed', false) + } const _updatedRound = await super.nextRound() await this._handleTurnEffects() await this.allowTurnOrderChangeInRounds() diff --git a/src/module/demonlord.js b/src/module/demonlord.js index 8b2398f5..bda935de 100644 --- a/src/module/demonlord.js +++ b/src/module/demonlord.js @@ -548,21 +548,6 @@ Hooks.on('renderCompendiumDirectory', async (app, html, _data) => { footer.append(button) }) -// Combat hooks -Hooks.on('combatTurnChange', async (combat, prior, _current) => { - if (game.user.isGM && prior.combatantId) { - const combatant = combat.combatants.get(prior.combatantId) - combatant.setFlag('demonlord', 'hasActed', true) - } -}) - -Hooks.on('combatRound', async (combat) => { - // Reset hasActed flag for all combatants at the start of each round - for (let combatant of combat.combatants) { - await combatant.setFlag('demonlord', 'hasActed', false) - } -}) - Hooks.once('diceSoNiceReady', dice3d => { dice3d.addSystem({id: 'demonlord', name: 'Demonlord'}, true) dice3d.addDicePreset({