Fix various minot stuff + add resources roll
This commit is contained in:
		| @@ -371,6 +371,10 @@ i.fvtt-cthulhu-eternal { | |||||||
|   min-width: 2.4rem; |   min-width: 2.4rem; | ||||||
|   max-width: 2.4rem; |   max-width: 2.4rem; | ||||||
| } | } | ||||||
|  | .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower input[type="checkbox"] { | ||||||
|  |   min-width: 1rem; | ||||||
|  |   max-width: 1rem; | ||||||
|  | } | ||||||
| .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .label-field { | .fvtt-cthulhu-eternal .protagonist-main .protagonist-pc .protagonist-right .willpower .label-field { | ||||||
|   flex-grow: 1; |   flex-grow: 1; | ||||||
|   margin-left: 4px; |   margin-left: 4px; | ||||||
| @@ -491,7 +495,7 @@ i.fvtt-cthulhu-eternal { | |||||||
|   gap: 8px; |   gap: 8px; | ||||||
| } | } | ||||||
| .fvtt-cthulhu-eternal .protagonist-biography .resources label { | .fvtt-cthulhu-eternal .protagonist-biography .resources label { | ||||||
|   min-width: 12rem; |   min-width: 8rem; | ||||||
| } | } | ||||||
| .fvtt-cthulhu-eternal .protagonist-biography .features, | .fvtt-cthulhu-eternal .protagonist-biography .features, | ||||||
| .fvtt-cthulhu-eternal .protagonist-biography .biodata { | .fvtt-cthulhu-eternal .protagonist-biography .biodata { | ||||||
|   | |||||||
| @@ -323,6 +323,12 @@ | |||||||
|       "veryHarsh": "Very Harsh" |       "veryHarsh": "Very Harsh" | ||||||
|     }, |     }, | ||||||
|     "Label": { |     "Label": { | ||||||
|  |       "Hand": "Hand", | ||||||
|  |       "Stowed": "Stowed", | ||||||
|  |       "Storage": "Storage", | ||||||
|  |       "resourceRating": "Resource rating", | ||||||
|  |       "Resources": "Resources", | ||||||
|  |       "multiplier": "Multiplier", | ||||||
|       "setBP": "Set BP", |       "setBP": "Set BP", | ||||||
|       "Vehicle": "Vehicle", |       "Vehicle": "Vehicle", | ||||||
|       "Speed": "Speed", |       "Speed": "Speed", | ||||||
|   | |||||||
| @@ -191,6 +191,11 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS | |||||||
|     // Debug : console.log(">>>>", event, target, rollType) |     // Debug : console.log(">>>>", event, target, rollType) | ||||||
|     // Deprecated : if (this.isEditMode) return |     // Deprecated : if (this.isEditMode) return | ||||||
|     switch (rollType) { |     switch (rollType) { | ||||||
|  |       case "resource":  | ||||||
|  |         item = foundry.utils.duplicate(this.actor.system.resources) | ||||||
|  |         item.name = game.i18n.localize(`CTHULHUETERNAL.Label.Resources`) | ||||||
|  |         item.targetScore = item.permanentRating | ||||||
|  |         break | ||||||
|       case "char": |       case "char": | ||||||
|         let charId = $(event.currentTarget).data("char-id") |         let charId = $(event.currentTarget).data("char-id") | ||||||
|         item = foundry.utils.duplicate(this.actor.system.characteristics[charId]) |         item = foundry.utils.duplicate(this.actor.system.characteristics[charId]) | ||||||
|   | |||||||
| @@ -209,6 +209,26 @@ export const WEAPON_SKILL_MAPPING = { | |||||||
|     "unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat" |     "unarmed": "CTHULHUETERNAL.Skill.UnarmedCombat" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export const MODIFIER_CHOICES = { | ||||||
|  |   "-10": "-10", | ||||||
|  |   "-20": "-20", | ||||||
|  |   "-40": "-40", | ||||||
|  |   "+0": "+0", | ||||||
|  |   "+10": "+10", | ||||||
|  |   "+20": "+20", | ||||||
|  |   "+40": "+40", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export const MULTIPLIER_CHOICES = { | ||||||
|  |   "0.25": "0.25", | ||||||
|  |   "0.5": "0.5", | ||||||
|  |   "1": "1", | ||||||
|  |   "2": "2", | ||||||
|  |   "4": "4", | ||||||
|  |   "5": "5" | ||||||
|  | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Include all constant definitions within the SYSTEM global export |  * Include all constant definitions within the SYSTEM global export | ||||||
|  * @type {Object} |  * @type {Object} | ||||||
| @@ -229,5 +249,7 @@ export const SYSTEM = { | |||||||
|   EQUIPMENT_STATES, |   EQUIPMENT_STATES, | ||||||
|   RESOURCE_BREAKDOWN, |   RESOURCE_BREAKDOWN, | ||||||
|   VEHICLE_SPEED, |   VEHICLE_SPEED, | ||||||
|  |   MODIFIER_CHOICES, | ||||||
|  |   MULTIPLIER_CHOICES, | ||||||
|   ASCII |   ASCII | ||||||
| } | } | ||||||
|   | |||||||
| @@ -59,18 +59,6 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|     return this.options.hasTarget |     return this.options.hasTarget | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   get targetName() { |  | ||||||
|     return this.options.targetName |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   get targetArmor() { |  | ||||||
|     return this.options.targetArmor |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   get targetMalus() { |  | ||||||
|     return this.options.targetMalus |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   get realDamage() { |   get realDamage() { | ||||||
|     return this.options.realDamage |     return this.options.realDamage | ||||||
|   } |   } | ||||||
| @@ -90,7 +78,24 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|   get isExhausted() { |   get isExhausted() { | ||||||
|     return this.options.isExhausted |     return this.options.isExhausted | ||||||
|   } |   } | ||||||
|    |  | ||||||
|  |   static updateResourceDialog(options) { | ||||||
|  |     let rating = 0 | ||||||
|  |     if (options.rollItem.enableHand) { | ||||||
|  |       rating += options.rollItem.hand | ||||||
|  |     } | ||||||
|  |     if (options.rollItem.enableStowed) { | ||||||
|  |       rating += options.rollItem.stowed | ||||||
|  |     } | ||||||
|  |     if (options.rollItem.enableStorage) { | ||||||
|  |       rating += options.rollItem.storage | ||||||
|  |     } | ||||||
|  |     let multiplier = Number($(`.roll-skill-multiplier`).val()) | ||||||
|  |     options.initialScore = rating | ||||||
|  |     options.percentScore = rating * multiplier | ||||||
|  |     $(".resource-score").text(`${rating} (${options.percentScore}%)`) | ||||||
|  |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * Prompt the user with a dialog to configure and execute a roll. |    * Prompt the user with a dialog to configure and execute a roll. | ||||||
|    * |    * | ||||||
| @@ -107,7 +112,10 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|    */ |    */ | ||||||
|   static async prompt(options = {}) { |   static async prompt(options = {}) { | ||||||
|     let formula = "1d100" |     let formula = "1d100" | ||||||
|     switch (options.rollType) {         |     let hasModifier = true | ||||||
|  |     let hasMultiplier = false  | ||||||
|  |  | ||||||
|  |     switch (options.rollType) { | ||||||
|       case "skill": |       case "skill": | ||||||
|         console.log(options.rollItem) |         console.log(options.rollItem) | ||||||
|         options.initialScore = options.rollItem.system.computeScore() |         options.initialScore = options.rollItem.system.computeScore() | ||||||
| @@ -116,35 +124,45 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|       case "char": |       case "char": | ||||||
|         options.initialScore = options.rollItem.targetScore |         options.initialScore = options.rollItem.targetScore | ||||||
|         break |         break | ||||||
|       case "damage":  |       case "resource": | ||||||
|         let formula = options.rollItem.system.damage  |         hasModifier = false | ||||||
|  |         hasMultiplier = true | ||||||
|  |         options.initialScore = options.rollItem.targetScore | ||||||
|  |         options.totalRating = options.rollItem.targetScore | ||||||
|  |         options.percentScore = options.rollItem.targetScore * 5 | ||||||
|  |         options.rollItem.enableHand = true | ||||||
|  |         options.rollItem.enableStowed = true | ||||||
|  |         options.rollItem.enableStorage = true | ||||||
|  |         break | ||||||
|  |       case "damage": | ||||||
|  |         let formula = options.rollItem.system.damage | ||||||
|         let damageRoll = new Roll(formula) |         let damageRoll = new Roll(formula) | ||||||
|         await damageRoll.evaluate() |         await damageRoll.evaluate() | ||||||
|         await damageRoll.toMessage({ |         await damageRoll.toMessage({ | ||||||
|           flavor: `${options.rollItem.name} - Damage Roll` |           flavor: `${options.rollItem.name} - Damage Roll` | ||||||
|         }); |         }); | ||||||
|         let isLethal = false |         let isLethal = false | ||||||
|         if (options.rollItem.system.lethality > 0 ) { |         if (options.rollItem.system.lethality > 0) { | ||||||
|           let lethalityRoll = new Roll("1d100") |           let lethalityRoll = new Roll("1d100") | ||||||
|           await lethalityRoll.evaluate() |           await lethalityRoll.evaluate() | ||||||
|           isLethal = (lethalityRoll.total <= options.rollItem.system.lethality)  |           isLethal = (lethalityRoll.total <= options.rollItem.system.lethality) | ||||||
|           await lethalityRoll.toMessage({ |           await lethalityRoll.toMessage({ | ||||||
|             flavor: `${options.rollItem.name} - Lethality Roll : ${lethalityRoll.total} <= ${options.rollItem.system.lethality} => ${isLethal}` |             flavor: `${options.rollItem.name} - Lethality Roll : ${lethalityRoll.total} <= ${options.rollItem.system.lethality} => ${isLethal}` | ||||||
|           }); |           }); | ||||||
|           } |         } | ||||||
|         return |         return | ||||||
|       case "weapon":   |       case "weapon": | ||||||
|         let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") |         let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") | ||||||
|         if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) { |         if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) { | ||||||
|           ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType") )   |           ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType")) | ||||||
|           return |           return | ||||||
|         } |         } | ||||||
|         let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType])   |         let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) | ||||||
|         let actor = game.actors.get(options.actorId) |         let actor = game.actors.get(options.actorId) | ||||||
|         options.weapon = options.rollItem |         options.weapon = options.rollItem | ||||||
|         options.rollItem = actor.items.find(i => i.type === "skill" && i.name.toLowerCase() === skillName.toLowerCase()) |         options.rollItem = actor.items.find(i => i.type === "skill" && i.name.toLowerCase() === skillName.toLowerCase()) | ||||||
|         if (!options.rollItem) { |         if (!options.rollItem) { | ||||||
|           ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponSkill") ) |           ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponSkill")) | ||||||
|           return |           return | ||||||
|         } |         } | ||||||
|         options.initialScore = options.rollItem.system.computeScore() |         options.initialScore = options.rollItem.system.computeScore() | ||||||
| @@ -162,38 +180,34 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|       default: "public", |       default: "public", | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     const choiceModifier = { |     const choiceModifier = SYSTEM.MODIFIER_CHOICES | ||||||
|       "-10": "-10", |     const choiceMultiplier = SYSTEM.MULTIPLIER_CHOICES | ||||||
|       "-20": "-20", |  | ||||||
|       "-40": "-40", |  | ||||||
|       "0": "0", |  | ||||||
|       "+10": "+10", |  | ||||||
|       "+20": "+20", |  | ||||||
|       "+40": "+40", |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     let modifier = "0" |     let modifier = "+0" | ||||||
|     let targetMalus = "0" |     let multiplier = "5" | ||||||
|     let targetName |  | ||||||
|     let targetArmor |  | ||||||
|  |  | ||||||
|     let dialogContext = { |     let dialogContext = { | ||||||
|       rollType: options.rollType, |       rollType: options.rollType, | ||||||
|       rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class |       rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class | ||||||
|       weapon: options?.weapon,  |       weapon: options?.weapon, | ||||||
|       initialScore: options.initialScore, |       initialScore: options.initialScore, | ||||||
|       targetScore: options.initialScore, |       targetScore: options.initialScore, | ||||||
|       isLowWP: options.isLowWP, |       isLowWP: options.isLowWP, | ||||||
|       isZeroWP: options.isZeroWP, |       isZeroWP: options.isZeroWP, | ||||||
|       isExhausted: options.isExhausted, |       isExhausted: options.isExhausted, | ||||||
|  |       enableHand: options.rollItem.enableHand, | ||||||
|  |       enableStowed: options.rollItem.enableStowed, | ||||||
|  |       enableStorage: options.rollItem.enableStorage, | ||||||
|       rollModes, |       rollModes, | ||||||
|       fieldRollMode, |       fieldRollMode, | ||||||
|       choiceModifier, |       choiceModifier, | ||||||
|  |       choiceMultiplier, | ||||||
|       formula, |       formula, | ||||||
|       hasTarget: options.hasTarget, |       hasTarget: options.hasTarget, | ||||||
|  |       hasModifier, | ||||||
|  |       hasMultiplier, | ||||||
|       modifier, |       modifier, | ||||||
|       targetName, |       multiplier | ||||||
|       targetArmor |  | ||||||
|     } |     } | ||||||
|     const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext) |     const content = await renderTemplate("systems/fvtt-cthulhu-eternal/templates/roll-dialog.hbs", dialogContext) | ||||||
|  |  | ||||||
| @@ -215,30 +229,49 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|  |       actions: { | ||||||
|  |         "selectHand": (event, button, dialog) => { | ||||||
|  |           options.rollItem.enableHand = !options.rollItem.enableHand | ||||||
|  |           this.updateResourceDialog(options) | ||||||
|  |         }, | ||||||
|  |         "selectStowed": (event, button, dialog) => { | ||||||
|  |           options.rollItem.enableStowed = !options.rollItem.enableStowed | ||||||
|  |           this.updateResourceDialog(options) | ||||||
|  |         }, | ||||||
|  |         "selectStorage": (event, button, dialog) => { | ||||||
|  |           options.rollItem.enableStorage = !options.rollItem.enableStorage | ||||||
|  |           this.updateResourceDialog(options) | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|       rejectClose: false, // Click on Close button will not launch an error |       rejectClose: false, // Click on Close button will not launch an error | ||||||
|       render: (event, dialog) => { |       render: (event, dialog) => { | ||||||
|       }, |         $(".roll-skill-multiplier").change(event => { | ||||||
|  |           options.multiplier = Number(event.target.value) | ||||||
|  |           this.updateResourceDialog(options)           | ||||||
|  |         }) | ||||||
|  |       } | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     // If the user cancels the dialog, exit |     // If the user cancels the dialog, exit | ||||||
|     if (rollContext === null) return |     if (rollContext === null) return | ||||||
|  |  | ||||||
|     let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext) |     let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext) | ||||||
|     rollData.rollMode =  rollContext.visibility |     rollData.rollMode = rollContext.visibility | ||||||
|     rollData.targetName = targetName |  | ||||||
|     rollData.targetArmor = targetArmor |  | ||||||
|     rollData.targetMalus = targetMalus |  | ||||||
|  |  | ||||||
|     // Update target score |     // Update target score | ||||||
|     console.log(rollData) |     console.log(rollData) | ||||||
|     rollData.targetScore =  Math.min( Math.max(options.initialScore + Number(rollData.modifier), 0), 100) |     if (options.rollType === "resource" ) { | ||||||
|     if ( rollData.isLowWP || rollData.isExhausted) { |       rollData.targetScore = options.initialScore * Number(rollContext.multiplier) | ||||||
|       rollData.targetScore -= 20 |     } else {  | ||||||
|  |       rollData.targetScore = Math.min(Math.max(options.initialScore + Number(rollData.modifier), 0), 100) | ||||||
|  |       if (rollData.isLowWP || rollData.isExhausted) { | ||||||
|  |         rollData.targetScore -= 20 | ||||||
|  |       } | ||||||
|  |       if (rollData.isZeroWP) { | ||||||
|  |         rollData.targetScore = 0 | ||||||
|  |       } | ||||||
|  |       rollData.targetScore = Math.min(Math.max(rollData.targetScore, 0), 100)   | ||||||
|     } |     } | ||||||
|     if ( rollData.isZeroWP ) { |  | ||||||
|       rollData.targetScore = 0 |  | ||||||
|     } |  | ||||||
|     rollData.targetScore = Math.min( Math.max(rollData.targetScore, 0), 100) |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * A hook event that fires before the roll is made. |      * A hook event that fires before the roll is made. | ||||||
| @@ -249,9 +282,9 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|     await roll.evaluate() |     await roll.evaluate() | ||||||
|  |  | ||||||
|     // Compute the result quality |     // Compute the result quality | ||||||
|     let resultType = "failure"   |     let resultType = "failure" | ||||||
|     let dec = Math.floor(roll.total/10) |     let dec = Math.floor(roll.total / 10) | ||||||
|     let unit = roll.total - (dec*10) |     let unit = roll.total - (dec * 10) | ||||||
|     if (roll.total <= rollData.targetScore) { |     if (roll.total <= rollData.targetScore) { | ||||||
|       resultType = "success" |       resultType = "success" | ||||||
|       // Detect if decimal == unit in the dire total result  |       // Detect if decimal == unit in the dire total result  | ||||||
| @@ -294,9 +327,9 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSkill")}` |         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSkill")}` | ||||||
|       case "weapon": |       case "weapon": | ||||||
|         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleWeapon")}` |         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleWeapon")}` | ||||||
|       case "char":  |       case "char": | ||||||
|         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleCharacteristic")}` |         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleCharacteristic")}` | ||||||
|       case "san":  |       case "san": | ||||||
|         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSAN")}` |         return `${game.i18n.localize("CTHULHUETERNAL.Label.titleSAN")}` | ||||||
|       default: |       default: | ||||||
|         return game.i18n.localize("CTHULHUETERNAL.Label.titleStandard") |         return game.i18n.localize("CTHULHUETERNAL.Label.titleStandard") | ||||||
| @@ -335,10 +368,10 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|    */ |    */ | ||||||
|   async _getChatCardData(isPrivate) { |   async _getChatCardData(isPrivate) { | ||||||
|     let cardData = foundry.utils.duplicate(this.options) |     let cardData = foundry.utils.duplicate(this.options) | ||||||
|     cardData.css =  [SYSTEM.id, "dice-roll"] |     cardData.css = [SYSTEM.id, "dice-roll"] | ||||||
|     cardData.data =  this.data |     cardData.data = this.data | ||||||
|     cardData.diceTotal =  this.dice.reduce((t, d) => t + d.total, 0) |     cardData.diceTotal = this.dice.reduce((t, d) => t + d.total, 0) | ||||||
|     cardData.isGM =  game.user.isGM |     cardData.isGM = game.user.isGM | ||||||
|     cardData.formula = this.formula |     cardData.formula = this.formula | ||||||
|     cardData.total = this.total |     cardData.total = this.total | ||||||
|     cardData.actorId = this.actorId |     cardData.actorId = this.actorId | ||||||
| @@ -354,7 +387,7 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|     cardData.isLowWP = this.isLowWP |     cardData.isLowWP = this.isLowWP | ||||||
|     cardData.isZeroWP = this.isZeroWP |     cardData.isZeroWP = this.isZeroWP | ||||||
|     cardData.isExhausted = this.isExhausted |     cardData.isExhausted = this.isExhausted | ||||||
|      |  | ||||||
|  |  | ||||||
|     console.log(cardData) |     console.log(cardData) | ||||||
|  |  | ||||||
| @@ -379,9 +412,6 @@ export default class CthulhuEternalRoll extends Roll { | |||||||
|         actingCharName: this.actorName, |         actingCharName: this.actorName, | ||||||
|         actingCharImg: this.actorImage, |         actingCharImg: this.actorImage, | ||||||
|         hasTarget: this.hasTarget, |         hasTarget: this.hasTarget, | ||||||
|         targetName: this.targetName, |  | ||||||
|         targetArmor: this.targetArmor, |  | ||||||
|         targetMalus: this.targetMalus, |  | ||||||
|         realDamage: this.realDamage, |         realDamage: this.realDamage, | ||||||
|         ...messageData, |         ...messageData, | ||||||
|       }, |       }, | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| MANIFEST-000052 | MANIFEST-000068 | ||||||
|   | |||||||
| @@ -1,3 +1,8 @@ | |||||||
| 2025/01/10-00:04:46.700736 7f0abaffd6c0 Recovering log #50 | 2025/01/25-18:18:47.579516 7f69797fa6c0 Recovering log #66 | ||||||
| 2025/01/10-00:04:46.711152 7f0abaffd6c0 Delete type=3 #48 | 2025/01/25-18:18:47.635623 7f69797fa6c0 Delete type=3 #64 | ||||||
| 2025/01/10-00:04:46.711210 7f0abaffd6c0 Delete type=0 #50 | 2025/01/25-18:18:47.635705 7f69797fa6c0 Delete type=0 #66 | ||||||
|  | 2025/01/25-18:23:50.402055 7f6978bff6c0 Level-0 table #71: started | ||||||
|  | 2025/01/25-18:23:50.402099 7f6978bff6c0 Level-0 table #71: 0 bytes OK | ||||||
|  | 2025/01/25-18:23:50.411525 7f6978bff6c0 Delete type=0 #69 | ||||||
|  | 2025/01/25-18:23:50.411705 7f6978bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) | ||||||
|  | 2025/01/25-18:23:50.411749 7f6978bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| 2025/01/09-15:39:16.704802 7f0abb7fe6c0 Recovering log #46 | 2025/01/25-17:02:58.822790 7f6979ffb6c0 Recovering log #62 | ||||||
| 2025/01/09-15:39:16.715860 7f0abb7fe6c0 Delete type=3 #44 | 2025/01/25-17:02:58.899589 7f6979ffb6c0 Delete type=3 #60 | ||||||
| 2025/01/09-15:39:16.715933 7f0abb7fe6c0 Delete type=0 #46 | 2025/01/25-17:02:58.899681 7f6979ffb6c0 Delete type=0 #62 | ||||||
| 2025/01/09-16:20:07.336867 7f0ab9bff6c0 Level-0 table #51: started | 2025/01/25-18:12:05.328260 7f6978bff6c0 Level-0 table #67: started | ||||||
| 2025/01/09-16:20:07.336898 7f0ab9bff6c0 Level-0 table #51: 0 bytes OK | 2025/01/25-18:12:05.328291 7f6978bff6c0 Level-0 table #67: 0 bytes OK | ||||||
| 2025/01/09-16:20:07.343031 7f0ab9bff6c0 Delete type=0 #49 | 2025/01/25-18:12:05.334284 7f6978bff6c0 Delete type=0 #65 | ||||||
| 2025/01/09-16:20:07.352821 7f0ab9bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) | 2025/01/25-18:12:05.334447 7f6978bff6c0 Manual compaction at level-0 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) | ||||||
| 2025/01/09-16:20:07.369688 7f0ab9bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) | 2025/01/25-18:12:05.362492 7f6978bff6c0 Manual compaction at level-1 from '!folders!DD8331Hda4rhvEf9' @ 72057594037927935 : 1 .. '!items!zplzTG30QXHURusr' @ 0 : 0; will stop at (end) | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs-system/skills/MANIFEST-000068
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs-system/skills/MANIFEST-000068
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -130,6 +130,10 @@ | |||||||
|           min-width: 2.4rem; |           min-width: 2.4rem; | ||||||
|           max-width: 2.4rem; |           max-width: 2.4rem; | ||||||
|         } |         } | ||||||
|  |         input[type="checkbox"] { | ||||||
|  |           min-width: 1rem; | ||||||
|  |           max-width: 1rem; | ||||||
|  |         } | ||||||
|         .label-field { |         .label-field { | ||||||
|           flex-grow: 1; |           flex-grow: 1; | ||||||
|           margin-left: 4px; |           margin-left: 4px; | ||||||
| @@ -266,7 +270,7 @@ | |||||||
|     grid-template-columns: repeat(3, 1fr); |     grid-template-columns: repeat(3, 1fr); | ||||||
|     gap: 8px; |     gap: 8px; | ||||||
|     label { |     label { | ||||||
|       min-width: 12rem; |       min-width: 8rem; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,8 +17,12 @@ | |||||||
|         {{#if weapon}} |         {{#if weapon}} | ||||||
|         <li><strong>Weapon : {{weapon.name}}</strong></li> |         <li><strong>Weapon : {{weapon.name}}</strong></li> | ||||||
|         {{/if}} |         {{/if}} | ||||||
|  |          | ||||||
|  |         {{#if (eq rollType "resource")}} | ||||||
|  |         <li><strong>{{rollItem.name}} : {{initialScore}}</strong></li> | ||||||
|  |         {{else}} | ||||||
|         <li><strong>{{rollItem.name}} : {{initialScore}}%</strong></li> |         <li><strong>{{rollItem.name}} : {{initialScore}}%</strong></li> | ||||||
|  |         {{/if}} | ||||||
|  |  | ||||||
|         {{#if isZeroWP}} |         {{#if isZeroWP}} | ||||||
|         <li class="red-warning">Zero WP : Automatic failure (ie 0%)</li> |         <li class="red-warning">Zero WP : Automatic failure (ie 0%)</li> | ||||||
| @@ -32,8 +36,12 @@ | |||||||
|         <li class="orange-warning">Exhausted : -20%</li> |         <li class="orange-warning">Exhausted : -20%</li> | ||||||
|         {{/if}} |         {{/if}} | ||||||
|  |  | ||||||
|  |         {{#if  (eq rollType "resource")}} | ||||||
|  |         <li>{{localize "CTHULHUETERNAL.Label.multiplier"}} : {{multiplier}}</li> | ||||||
|  |         {{else}} | ||||||
|         <li>{{localize "CTHULHUETERNAL.Label.modifier"}} : {{modifier}}%</li> |         <li>{{localize "CTHULHUETERNAL.Label.modifier"}} : {{modifier}}%</li> | ||||||
|  |         {{/if}} | ||||||
|  |    | ||||||
|         <li>{{localize "CTHULHUETERNAL.Label.targetScore"}} : {{targetScore}}%</li> |         <li>{{localize "CTHULHUETERNAL.Label.targetScore"}} : {{targetScore}}%</li> | ||||||
|         {{#if isSuccess}} |         {{#if isSuccess}} | ||||||
|         {{#if isCritical}} |         {{#if isCritical}} | ||||||
|   | |||||||
| @@ -4,9 +4,6 @@ | |||||||
|     <legend>{{localize "CTHULHUETERNAL.Label.resources"}}</legend> |     <legend>{{localize "CTHULHUETERNAL.Label.resources"}}</legend> | ||||||
|      <div class="resources"> |      <div class="resources"> | ||||||
|       {{formField systemFields.resources.fields.permanentRating value=system.resources.permanentRating name="system.resources.permanentRating" localize=true}} |       {{formField systemFields.resources.fields.permanentRating value=system.resources.permanentRating name="system.resources.permanentRating" localize=true}} | ||||||
|       {{formField systemFields.resources.fields.hand value=system.resources.hand name="system.resources.hand" localize=true disabled=true}} |  | ||||||
|       {{formField systemFields.resources.fields.stowed value=system.resources.stowed name="system.resources.stowed" localize=true disabled=true}} |  | ||||||
|       {{formField systemFields.resources.fields.storage value=system.resources.storage name="system.resources.storage" localize=true disabled=true}} |  | ||||||
|       <div> |       <div> | ||||||
|         <span class="label-field">{{localize "CTHULHUETERNAL.Label.resourceChecks"}}</span> |         <span class="label-field">{{localize "CTHULHUETERNAL.Label.resourceChecks"}}</span> | ||||||
|         {{#each system.resources.checks as |check idx|}} |         {{#each system.resources.checks as |check idx|}} | ||||||
| @@ -14,7 +11,10 @@ | |||||||
|           data-name="checks" {{#if check}} checked {{/if}}   {{#if (gte @index @root.system.resources.nbValidChecks)}} disabled {{/if}}> |           data-name="checks" {{#if check}} checked {{/if}}   {{#if (gte @index @root.system.resources.nbValidChecks)}} disabled {{/if}}> | ||||||
|         {{/each}} |         {{/each}} | ||||||
|       </div> |       </div> | ||||||
|       <button class="resource-roll">Resource roll</button> |       <button class="resource-roll rollable" data-roll-type="resource"><img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />Resource roll</button> | ||||||
|  |       {{formField systemFields.resources.fields.hand value=system.resources.hand name="system.resources.hand" localize=true disabled=true}} | ||||||
|  |       {{formField systemFields.resources.fields.stowed value=system.resources.stowed name="system.resources.stowed" localize=true disabled=true}} | ||||||
|  |       {{formField systemFields.resources.fields.storage value=system.resources.storage name="system.resources.storage" localize=true disabled=true}} | ||||||
|       </div> |       </div> | ||||||
|   </fieldset> |   </fieldset> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,39 +1,59 @@ | |||||||
| {{log "roll-dialog" this}} | {{log "roll-dialog" this}} | ||||||
| <div class="fvtt-cthulhu-eternal-roll-dialog"> | <div class="fvtt-cthulhu-eternal-roll-dialog"> | ||||||
|     <fieldSet> |   <fieldSet> | ||||||
|       {{#if (eq rollType "skill")}} |     {{#if (eq rollType "skill")}} | ||||||
|       <legend>{{localize "CTHULHUETERNAL.Label.skill"}}</legend> |     <legend>{{localize "CTHULHUETERNAL.Label.skill"}}</legend> | ||||||
|       {{/if}} |     {{/if}} | ||||||
|       {{#if (eq rollType "char")}} |     {{#if (eq rollType "char")}} | ||||||
|       <legend>{{localize "CTHULHUETERNAL.Label.characteristic"}}</legend> |     <legend>{{localize "CTHULHUETERNAL.Label.characteristic"}}</legend> | ||||||
|       {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|       <div class="dialog-skill">{{rollItem.name}} : {{initialScore}}%</div> |     {{#if (eq rollType "resource")}} | ||||||
|  |     <legend>{{localize "CTHULHUETERNAL.Label.resourceRating"}}</legend> | ||||||
|  |     <div class="dialog-skill">{{rollItem.name}} : <span class="resource-score">{{initialScore}} ({{mul initialScore 5}}%)</span></div>   | ||||||
|  |     <div class="dialog-skill">{{localize "CTHULHUETERNAL.Label.Hand"}} : {{rollItem.hand}} <input type="checkbox" data-action="selectHand" {{checked rollItem.enableHand}}></div>   | ||||||
|  |     <div class="dialog-skill">{{localize "CTHULHUETERNAL.Label.Stowed"}} : {{rollItem.stowed}} <input type="checkbox" data-action="selectStowed" {{checked rollItem.enableStowed}}></div>   | ||||||
|  |     <div class="dialog-skill">{{localize "CTHULHUETERNAL.Label.Storage"}} : {{rollItem.storage}} <input type="checkbox" data-action="selectStorage" {{checked rollItem.enableStorage}}></div>   | ||||||
|  |     {{else}} | ||||||
|  |     <div class="dialog-skill">{{rollItem.name}} : {{initialScore}}%</div> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|       {{#if weapon}} |     {{#if weapon}} | ||||||
|       <div class="dialog-skill">Weapon : {{weapon.name}}</div> |     <div class="dialog-skill">Weapon : {{weapon.name}}</div> | ||||||
|       {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|       {{#if isZeroWP}} |     {{#if isZeroWP}} | ||||||
|       <div class="dialog-skill red-warning">Zero WP : Automatic failure (ie 0%)</div> |     <div class="dialog-skill red-warning">Zero WP : Automatic failure (ie 0%)</div> | ||||||
|       {{else}} |     {{else}} | ||||||
|         {{#if isLowWP}} |     {{#if isLowWP}} | ||||||
|         <div class="dialog-skill orange-warning">Low WP : -20%</div> |     <div class="dialog-skill orange-warning">Low WP : -20%</div> | ||||||
|         {{/if}} |     {{/if}} | ||||||
|       {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|       {{#if isExhausted}} |     {{#if isExhausted}} | ||||||
|         <div class="dialog-skill orange-warning">Exhausted : -20%</div> |     <div class="dialog-skill orange-warning">Exhausted : -20%</div> | ||||||
|       {{/if}} |     {{/if}} | ||||||
|        |  | ||||||
|     </fieldSet> |   </fieldSet> | ||||||
|  |  | ||||||
|  |   {{#if hasModifier}} | ||||||
|  |   <fieldSet class="dialog-modifier"> | ||||||
|  |     <legend>{{localize "CTHULHUETERNAL.Label.modifier"}}</legend> | ||||||
|  |     <select name="modifier" class="roll-skill-modifier"> | ||||||
|  |       {{selectOptions choiceModifier selected=modifier}} | ||||||
|  |     </select> | ||||||
|  |   </fieldSet> | ||||||
|  |   {{/if}} | ||||||
|  |  | ||||||
|  |   {{#if hasMultiplier}} | ||||||
|  |   <fieldSet class="dialog-modifier"> | ||||||
|  |     <legend>{{localize "CTHULHUETERNAL.Label.multiplier"}}</legend> | ||||||
|  |     <select name="multiplier" class="roll-skill-modifier roll-skill-multiplier"> | ||||||
|  |       {{selectOptions choiceMultiplier selected=multiplier}} | ||||||
|  |     </select> | ||||||
|  |   </fieldSet> | ||||||
|  |   {{/if}} | ||||||
|  |  | ||||||
|     <fieldSet class="dialog-modifier"> |  | ||||||
|       <legend>{{localize "CTHULHUETERNAL.Label.modifier"}}</legend> |  | ||||||
|       <select name="modifier" class="roll-skill-modifier"> |  | ||||||
|         {{selectOptions choiceModifier selected=modifier}} |  | ||||||
|       </select> |  | ||||||
|     </fieldSet> |  | ||||||
|   <fieldSet> |   <fieldSet> | ||||||
|     <legend>{{localize "CTHULHUETERNAL.Label.rollView"}}</legend> |     <legend>{{localize "CTHULHUETERNAL.Label.rollView"}}</legend> | ||||||
|     <select name="visibility"> |     <select name="visibility"> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user