From beefbab85bba3eda594620cb9ca1482c89683789 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 30 Jul 2022 16:31:20 -0400 Subject: [PATCH 1/8] Fix for raw die fudge still occuring with global disabled --- scripts/classes/DieHardSystem.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/classes/DieHardSystem.js b/scripts/classes/DieHardSystem.js index 8f1c8e8..c6ce1b2 100644 --- a/scripts/classes/DieHardSystem.js +++ b/scripts/classes/DieHardSystem.js @@ -113,6 +113,12 @@ export default class DieHardSystem{ dieHardLog(false, functionLogName + ' - this', this); dieHardLog(false, functionLogName + ' - eval_options', eval_options); + if (game.settings.get('foundry-die-hard', 'dieHardSettings').fudgeConfig.globalDisable) { + dieHardLog(true, functionLogName + ' - Globally disabled', game.settings.get('foundry-die-hard', 'dieHardSettings').fudgeConfig.globalDisable); + // Globally disabled + return wrapped(eval_options) + } + // Check if user has an active raw fudge let userFudges = game.users.current.getFlag('foundry-die-hard', 'fudges'); if (! Array.isArray(userFudges)) { From 1960011f472060eca36610dd9abe450b5094c360 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 30 Jul 2022 16:34:10 -0400 Subject: [PATCH 2/8] Hackish disable 'Times' for fudges; want to leave core logic in there for now... --- scripts/classes/DieHardFudgeDialog.js | 2 ++ templates/die-hard-fudge-config.html | 2 ++ 2 files changed, 4 insertions(+) diff --git a/scripts/classes/DieHardFudgeDialog.js b/scripts/classes/DieHardFudgeDialog.js index fa93c01..addc26b 100644 --- a/scripts/classes/DieHardFudgeDialog.js +++ b/scripts/classes/DieHardFudgeDialog.js @@ -256,9 +256,11 @@ export default class DieHardFudgeDialog extends FormApplication { } let fudgeTimes = 1; + /* if (Number.isInteger(Number.parseInt(formData.fudgeTimes))) { fudgeTimes = Number.parseInt(formData.fudgeTimes); } + */ try { for (let loopIndex = 0; loopIndex < fudgeTimes; loopIndex++) { diff --git a/templates/die-hard-fudge-config.html b/templates/die-hard-fudge-config.html index 7e38e6d..6b66c96 100644 --- a/templates/die-hard-fudge-config.html +++ b/templates/die-hard-fudge-config.html @@ -62,9 +62,11 @@

RUL +
From 9360308717b260ed302b8fc15817490ac886c81b Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 30 Jul 2022 16:49:52 -0400 Subject: [PATCH 3/8] Prevent select of fudge to use --- scripts/classes/DieHardDnd5e.js | 8 ++++---- scripts/classes/DieHardPf2e.js | 4 ++++ scripts/classes/DieHardSystem.js | 15 ++++++++------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/scripts/classes/DieHardDnd5e.js b/scripts/classes/DieHardDnd5e.js index 379388c..1df2fd3 100644 --- a/scripts/classes/DieHardDnd5e.js +++ b/scripts/classes/DieHardDnd5e.js @@ -181,8 +181,8 @@ export default class DieHardDnd5e extends DieHardSystem{ actorFudges = [] } dieHardLog(false, functionLogName + ' - actorFudges', actorFudges); - let fudgeIndex = actorFudges.findIndex(element => { return element.whatId === rollType;}); - if (fudgeIndex !== -1 && actorFudges[fudgeIndex].statusActive) { + let fudgeIndex = actorFudges.findIndex(element => { return ((element.whatId === rollType) && (element.statusActive));}); + if (fudgeIndex !== -1) { dieHardLog(false, functionLogName + ' - active actor fudge', actorFudges[fudgeIndex]); foundry.utils.mergeObject(options, {data: {fudge: true, fudgeOperator: actorFudges[fudgeIndex].operator, fudgeOperatorValue: actorFudges[fudgeIndex].operatorValue, fudgeHow: actorFudges[fudgeIndex].howFormula }}); if (actorFudges[fudgeIndex].statusEndless) { @@ -205,8 +205,8 @@ export default class DieHardDnd5e extends DieHardSystem{ userFudges = [] } dieHardLog(false, functionLogName + ' - userFudges', userFudges); - fudgeIndex = userFudges.findIndex(element => { return element.whatId === rollType;}); - if (fudgeIndex !== -1 && userFudges[fudgeIndex].statusActive) { + fudgeIndex = userFudges.findIndex(element => { return ((element.whatId === rollType) && (element.statusActive));}); + if (fudgeIndex !== -1) { dieHardLog(false, functionLogName + ' - active user fudge', userFudges[fudgeIndex]); foundry.utils.mergeObject(options, {data: {fudge: true, fudgeOperator: userFudges[fudgeIndex].operator, fudgeOperatorValue: userFudges[fudgeIndex].operatorValue, fudgeHow: userFudges[fudgeIndex].howFormula }}); if (userFudges[fudgeIndex].statusEndless) { diff --git a/scripts/classes/DieHardPf2e.js b/scripts/classes/DieHardPf2e.js index 1246f18..abf83f3 100644 --- a/scripts/classes/DieHardPf2e.js +++ b/scripts/classes/DieHardPf2e.js @@ -155,6 +155,9 @@ export default class DieHardPf2e extends DieHardSystem { /** * Generic wrapper for all PF2e Check rolls */ + + // Currently not used, since can't find way to intercept lower level roll + /* wrappedCheckRoll(wrapped, check, context, event, callback) { dieHardLog(true, 'DieHardPf2e.wrappedCheckRoll - this', this); dieHardLog(true, 'DieHardPf2e.wrappedCheckRoll - arguments.length', arguments.length); @@ -251,6 +254,7 @@ export default class DieHardPf2e extends DieHardSystem { let result = wrapped(check, context, event, callback); dieHardLog(false, 'DieHardPf2e.wrappedCheckRoll - result', result); } + */ /* actorRollSave(wrapped, skillId, options = {}) { diff --git a/scripts/classes/DieHardSystem.js b/scripts/classes/DieHardSystem.js index c6ce1b2..bb8405f 100644 --- a/scripts/classes/DieHardSystem.js +++ b/scripts/classes/DieHardSystem.js @@ -124,8 +124,8 @@ export default class DieHardSystem{ if (! Array.isArray(userFudges)) { userFudges = [] } - let fudgeIndex = userFudges.findIndex(element => { return element.whatId === ('rawd' + this.faces);}); - if (fudgeIndex !== -1 && userFudges[fudgeIndex].statusActive) { + let fudgeIndex = userFudges.findIndex(element => { return ((element.whatId === ('rawd' + this.faces)) && (element.statusActive));}); + if (fudgeIndex !== -1) { dieHardLog(false, functionLogName + ' - active user raw fudge', userFudges[fudgeIndex]); // Time to make the fudge @@ -217,9 +217,9 @@ export default class DieHardSystem{ userFudges = [] } - let fudgeIndex = userFudges.findIndex(element => { return element.whatId === ('totald' + this.dice[die].faces);}); + let fudgeIndex = userFudges.findIndex(element => { return ((element.whatId === ('totald' + this.dice[die].faces)) && (element.statusActive));}); dieHardLog(false, functionLogName + ' - dice faces', this.dice[die].faces); - if (fudgeIndex !== -1 && userFudges[fudgeIndex].statusActive) { + if (fudgeIndex !== -1) { dieHardLog(false, functionLogName + ' - active user total fudge', userFudges[fudgeIndex]); foundry.utils.mergeObject(this, {data: {fudge: true, fudgeOperator: userFudges[fudgeIndex].operator, fudgeOperatorValue: userFudges[fudgeIndex].operatorValue, fudgeHow: userFudges[fudgeIndex].howFormula }}); @@ -437,11 +437,12 @@ export default class DieHardSystem{ async refreshActiveFudgesIcon() { if (game.settings.get('foundry-die-hard', 'dieHardSettings').fudgeConfig.globalDisable) { - document.getElementById('die-hard-pause-fudge-icon').classList.remove("die-hard-fudge-pause-icon-hidden"); - document.getElementById('die-hard-fudge-icon').classList.remove("die-hard-fudge-icon-active"); + document.getElementById('die-hard-pause-fudge-icon').classList.remove("die-hard-icon-hidden"); + document.getElementById('die-hard-fudge-icon').classList.add("die-hard-icon-hidden"); return; } else { - document.getElementById('die-hard-pause-fudge-icon').classList.add("die-hard-fudge-pause-icon-hidden"); + document.getElementById('die-hard-pause-fudge-icon').classList.add("die-hard-icon-hidden"); + document.getElementById('die-hard-fudge-icon').classList.remove("die-hard-icon-hidden"); } if (this.hasActiveFudges()) { document.getElementById('die-hard-fudge-icon').classList.add("die-hard-fudge-icon-active"); From 4082c024d040ecd2bef95cee9dcb751bfcae58e1 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 30 Jul 2022 16:50:42 -0400 Subject: [PATCH 4/8] Change icon behavior for global disabled --- scripts/classes/DieHard.js | 3 ++- styles/die-hard.css | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/classes/DieHard.js b/scripts/classes/DieHard.js index 148de98..471ccfc 100644 --- a/scripts/classes/DieHard.js +++ b/scripts/classes/DieHard.js @@ -24,7 +24,8 @@ export default class DieHard { let fudgeButton = document.createElement('label'); //fudgeButton.setAttribute('id', 'die-hard-fudge-icon'); fudgeButton.classList.add('die-hard-fudge-icon'); - fudgeButton.innerHTML = '
'; + // fudgeButton.innerHTML = '
'; + fudgeButton.innerHTML = ''; fudgeButton.addEventListener("click", async (ev) => { new DieHardFudgeDialog().render(true); diff --git a/styles/die-hard.css b/styles/die-hard.css index 9d3759f..61a668f 100644 --- a/styles/die-hard.css +++ b/styles/die-hard.css @@ -10,12 +10,12 @@ Inspiration/plagarism from https://gitlab.com/asacolips-projects/foundry-mods/fo z-index: 99999999; position: absolute; } -#chat-controls .die-hard-fudge-pause-icon-hidden { - visibility: hidden; +#chat-controls .die-hard-icon-hidden { + display: none; } #chat-controls #die-hard-pause-fudge-icon { flex: 0 0 0; - padding-left: 2px; + padding-left: 0px; color: #FFA500; } #chat-controls .die-hard-fudge-icon-active { From 44ada9dda66d6ce0e3fb41fa9d0f7af117b44fe8 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 31 Jul 2022 07:17:02 -0400 Subject: [PATCH 5/8] Fudge icon adjustments #14 --- scripts/classes/DieHard.js | 2 +- styles/die-hard.css | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/classes/DieHard.js b/scripts/classes/DieHard.js index 471ccfc..ae1ceda 100644 --- a/scripts/classes/DieHard.js +++ b/scripts/classes/DieHard.js @@ -25,7 +25,7 @@ export default class DieHard { //fudgeButton.setAttribute('id', 'die-hard-fudge-icon'); fudgeButton.classList.add('die-hard-fudge-icon'); // fudgeButton.innerHTML = '
'; - fudgeButton.innerHTML = ''; + fudgeButton.innerHTML = ''; fudgeButton.addEventListener("click", async (ev) => { new DieHardFudgeDialog().render(true); diff --git a/styles/die-hard.css b/styles/die-hard.css index 61a668f..004da04 100644 --- a/styles/die-hard.css +++ b/styles/die-hard.css @@ -19,9 +19,13 @@ Inspiration/plagarism from https://gitlab.com/asacolips-projects/foundry-mods/fo color: #FFA500; } #chat-controls .die-hard-fudge-icon-active { + color: #FFA500; + /* animation-name: fudge-icon-color; animation-duration: 2s; animation-iteration-count: infinite; + + */ } @@ -125,7 +129,7 @@ div.die-hard-form-group { cursor: pointer; text-align:center; } - +/* @keyframes fudge-icon-color { 0% { color: #FFFFFF; @@ -137,7 +141,7 @@ div.die-hard-form-group { color: #FFFFFF; } } - +*/ .die-hard-form-error { animation-name: die-hard-form-error-color; animation-duration: 1s; From e38d8e49eb3903455b46124083c9b2a8f1af9977 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 31 Jul 2022 07:21:25 -0400 Subject: [PATCH 6/8] Fudge config adjustments #15 --- styles/die-hard.css | 4 ++++ templates/die-hard-fudge-config.html | 15 ++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/styles/die-hard.css b/styles/die-hard.css index 004da04..9a85e66 100644 --- a/styles/die-hard.css +++ b/styles/die-hard.css @@ -18,6 +18,10 @@ Inspiration/plagarism from https://gitlab.com/asacolips-projects/foundry-mods/fo padding-left: 0px; color: #FFA500; } +.die-hard-status-button { + margin-right: 5px; + margin-left: 5px; +} #chat-controls .die-hard-fudge-icon-active { color: #FFA500; /* diff --git a/templates/die-hard-fudge-config.html b/templates/die-hard-fudge-config.html index 6b66c96..e26e25b 100644 --- a/templates/die-hard-fudge-config.html +++ b/templates/die-hard-fudge-config.html @@ -91,9 +91,7 @@

Active Fudges

| Rule | - Status - | - Actions + Status @@ -107,17 +105,16 @@

Active Fudges

| {{#if statusActive}} - + {{else}} - + {{/if}} - | {{#if statusEndless}} - + {{else}} - + {{/if}} - + From eff9cac4c5ea9e2ed7d5264a9177c201435a406e Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 31 Jul 2022 09:01:17 -0400 Subject: [PATCH 7/8] Fix fudge whispers going to more than GM #16 --- scripts/classes/DieHardSystem.js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/scripts/classes/DieHardSystem.js b/scripts/classes/DieHardSystem.js index bb8405f..ea13095 100644 --- a/scripts/classes/DieHardSystem.js +++ b/scripts/classes/DieHardSystem.js @@ -208,8 +208,28 @@ export default class DieHardSystem{ continue; } + dieHardLog(false, functionLogName + ' - DEBUG POINT'); // Check if actor has an active total fudge // ToDo: something goes here... #6 + /* + // Check if actor has an active fudge + let actorFudges = game.actors.get(actorId).getFlag('foundry-die-hard', 'fudges'); + if (! Array.isArray(actorFudges)) { + actorFudges = [] + } + //dieHardLog(false, 'DieHardDnd5e.wrappedRoll - actorFudges', actorFudges); + let fudgeIndex = actorFudges.findIndex(element => { return element.whatId === rollType;}); + if (fudgeIndex !== -1 && actorFudges[fudgeIndex].statusActive) { + dieHardLog(false, 'DieHardDnd5e.wrappedRoll - active actor fudge', actorFudges[fudgeIndex]); + foundry.utils.mergeObject(options, {data: {fudge: true, fudgeOperator: actorFudges[fudgeIndex].operator, fudgeOperatorValue: actorFudges[fudgeIndex].operatorValue, fudgeHow: actorFudges[fudgeIndex].howFormula }}); + // Delete the fudge from the actor + let deletedFudge = actorFudges.splice(fudgeIndex,1) + game.actors.get(actorId).setFlag('foundry-die-hard', 'fudges', actorFudges); + // Check if still have active fudges; + this.refreshActiveFudgesIcon(); + } + + */ // Check if user has an active total fudge let userFudges = game.users.current.getFlag('foundry-die-hard', 'fudges'); @@ -320,13 +340,18 @@ export default class DieHardSystem{ dmToGm(message) { var dm_ids = []; - for (let indexA = 0; indexA < game.users.length; indexA++) { - if (game.users[indexA].value.isGM) { - dm_ids.push(game.users[indexA].key) + // dieHardLog(false, 'DieHardSystem.dmToGm - game.users.values()', game.users.values()); + for (let user of game.users.values()) { + // dieHardLog(false, 'DieHardSystem.dmToGm - user', user); + if (user.isGM) { + dm_ids.push(user.id) + // dieHardLog(false, 'DieHardSystem.dmToGm - Added', user); } } + // dieHardLog(false, 'DieHardSystem.dmToGm - dm_ids', dm_ids); let whisper_to_dm = ChatMessage.create({ user: game.user.id, + type: CONST.CHAT_MESSAGE_TYPES.WHISPER, whisper: dm_ids, blind: true, content: message From cc437aec044481f5972389077e1b01722ddeafb5 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 1 Aug 2022 18:45:37 -0400 Subject: [PATCH 8/8] v0.0.7 --- CHANGELOG.md | 12 +++++++++++- module.json | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1f805d..eaef77d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,4 +25,14 @@ Jul 30, 2022 ## v0.0.6 Jul 30, 2022 * Fix attack/strike roll fudges for PF2e -* Add concept of "Total Roll" (including modifiers) vs "Raw Die Roll" (only the die) \ No newline at end of file +* Add concept of "Total Roll" (including modifiers) vs "Raw Die Roll" (only the die) + +## v0.0.7 +Aug 1, 2022 +* Remove 'Times' functionality from fudge +* Fix for raw die fudge still happening when global disabled +* Issue where disabled fudge before enabled would prevent selection of enabled +* Change fudge icon behavior for global disabled +* Fudge icon adjustments #14 +* Fudge config adjustments #15 +* Fix fudge whispers going to more than GM #16 diff --git a/module.json b/module.json index dd75b4c..5cd32e7 100644 --- a/module.json +++ b/module.json @@ -3,7 +3,7 @@ "title": "Die Hard", "description": "Adjustments for DND5e & PF2e die rolls like fudging...", "author": "Jeremy (UranusBytes)", - "version": "0.0.6", + "version": "0.0.7", "minimumCoreVersion": "9", "compatibleCoreVersion": "9", "esmodules": [