forked from public/fvtt-cthulhu-eternal
		
	Sync with wfrp 4, v8.4.0
This commit is contained in:
		| @@ -79,6 +79,14 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|     return this.options.isExhausted | ||||
|   } | ||||
|  | ||||
|   get isNudgedRoll() { | ||||
|     return this.options.isNudgedRoll | ||||
|   } | ||||
|  | ||||
|   get wpCost()  { | ||||
|     return this.options.wpCost | ||||
|   } | ||||
|  | ||||
|   static updateResourceDialog(options) { | ||||
|     let rating = 0 | ||||
|     if (options.rollItem.enableHand) { | ||||
| @@ -113,7 +121,8 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|   static async prompt(options = {}) { | ||||
|     let formula = "1d100" | ||||
|     let hasModifier = true | ||||
|     let hasMultiplier = false  | ||||
|     let hasMultiplier = false | ||||
|     options.isNudge = true | ||||
|  | ||||
|     switch (options.rollType) { | ||||
|       case "skill": | ||||
| @@ -123,6 +132,7 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|       case "san": | ||||
|       case "char": | ||||
|         options.initialScore = options.rollItem.targetScore | ||||
|         options.isNudge = (options.rollType !== "san") | ||||
|         break | ||||
|       case "resource": | ||||
|         hasModifier = false | ||||
| @@ -133,6 +143,7 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|         options.rollItem.enableHand = true | ||||
|         options.rollItem.enableStowed = true | ||||
|         options.rollItem.enableStorage = true | ||||
|         options.isNudge = false | ||||
|         break | ||||
|       case "damage": | ||||
|         let formula = options.rollItem.system.damage | ||||
| @@ -142,6 +153,7 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|           flavor: `${options.rollItem.name} - Damage Roll` | ||||
|         }); | ||||
|         let isLethal = false | ||||
|         options.isNudge = false | ||||
|         if (options.rollItem.system.lethality > 0) { | ||||
|           let lethalityRoll = new Roll("1d100") | ||||
|           await lethalityRoll.evaluate() | ||||
| @@ -153,8 +165,14 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|         return | ||||
|       case "weapon": | ||||
|         let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") | ||||
|         if (era !== options.rollItem.system.settings) { | ||||
|           ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.WrongEra")) | ||||
|           console.log("WP Wrong Era", era, options.rollItem.system.weaponType) | ||||
|           return | ||||
|         } | ||||
|         if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) { | ||||
|           ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType")) | ||||
|           console.log("WP Not found", era, options.rollItem.system.weaponType) | ||||
|           return | ||||
|         } | ||||
|         let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) | ||||
| @@ -247,7 +265,7 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|       render: (event, dialog) => { | ||||
|         $(".roll-skill-multiplier").change(event => { | ||||
|           options.multiplier = Number(event.target.value) | ||||
|           this.updateResourceDialog(options)           | ||||
|           this.updateResourceDialog(options) | ||||
|         }) | ||||
|       } | ||||
|     }) | ||||
| @@ -259,10 +277,10 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|     rollData.rollMode = rollContext.visibility | ||||
|  | ||||
|     // Update target score | ||||
|     console.log(rollData) | ||||
|     if (options.rollType === "resource" ) { | ||||
|     console.log("Rolldata", rollData, options) | ||||
|     if (options.rollType === "resource") { | ||||
|       rollData.targetScore = options.initialScore * Number(rollContext.multiplier) | ||||
|     } else {  | ||||
|     } else { | ||||
|       rollData.targetScore = Math.min(Math.max(options.initialScore + Number(rollData.modifier), 0), 100) | ||||
|       if (rollData.isLowWP || rollData.isExhausted) { | ||||
|         rollData.targetScore -= 20 | ||||
| @@ -270,25 +288,31 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|       if (rollData.isZeroWP) { | ||||
|         rollData.targetScore = 0 | ||||
|       } | ||||
|       rollData.targetScore = Math.min(Math.max(rollData.targetScore, 0), 100)   | ||||
|       rollData.targetScore = Math.min(Math.max(rollData.targetScore, 0), 100) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * A hook event that fires before the roll is made. | ||||
|      */ | ||||
|     if (Hooks.call("fvtt-cthulhu-eternal.preRoll", options, rollData) === false) return | ||||
|  | ||||
|     const roll = new this(formula, options.data, rollData) | ||||
|     await roll.evaluate() | ||||
|  | ||||
|     roll.displayRollResult(roll, options, rollData) | ||||
|  | ||||
|     if (Hooks.call("fvtt-cthulhu-eternal.Roll", options, rollData, roll) === false) return | ||||
|  | ||||
|     return roll | ||||
|   } | ||||
|  | ||||
|   displayRollResult(formula, options, rollData) { | ||||
|  | ||||
|     // Compute the result quality | ||||
|     let resultType = "failure" | ||||
|     let dec = Math.floor(roll.total / 10) | ||||
|     let unit = roll.total - (dec * 10) | ||||
|     if (roll.total <= rollData.targetScore) { | ||||
|     let dec = Math.floor(this.total / 10) | ||||
|     let unit = this.total - (dec * 10) | ||||
|     if (this.total <= rollData.targetScore) { | ||||
|       resultType = "success" | ||||
|       // Detect if decimal == unit in the dire total result  | ||||
|       if (dec === unit || roll.total === 1) { | ||||
|       if (dec === unit || this.total === 1) { | ||||
|         resultType = "successCritical" | ||||
|       } | ||||
|     } else { | ||||
| @@ -298,20 +322,20 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     roll.options.resultType = resultType | ||||
|     roll.options.isSuccess = resultType === "success" || resultType === "successCritical" | ||||
|     roll.options.isFailure = resultType === "failure" || resultType === "failureCritical" | ||||
|     roll.options.isCritical = resultType === "successCritical" || resultType === "failureCritical" | ||||
|     roll.options.isLowWP = rollData.isLowWP | ||||
|     roll.options.isZeroWP = rollData.isZeroWP | ||||
|     roll.options.isExhausted = rollData.isExhausted | ||||
|  | ||||
|     /** | ||||
|      * A hook event that fires after the roll has been made. | ||||
|      */ | ||||
|     if (Hooks.call("fvtt-cthulhu-eternal.Roll", options, rollData, roll) === false) return | ||||
|  | ||||
|     return roll | ||||
|     this.options.resultType = resultType | ||||
|     if (this.options.isNudgedRoll) {  | ||||
|       this.options.isSuccess = resultType === "success" || resultType === "successCritical" | ||||
|       this.options.isFailure = resultType === "failure" || resultType === "failureCritical" | ||||
|       this.options.isCritical = false | ||||
|     } else { | ||||
|       this.options.isSuccess = resultType === "success" || resultType === "successCritical" | ||||
|       this.options.isFailure = resultType === "failure" || resultType === "failureCritical" | ||||
|       this.options.isCritical = resultType === "successCritical" || resultType === "failureCritical" | ||||
|     } | ||||
|     this.options.isLowWP = rollData.isLowWP | ||||
|     this.options.isZeroWP = rollData.isZeroWP | ||||
|     this.options.isExhausted = rollData.isExhausted | ||||
|     this.options.rollData = foundry.utils.duplicate(rollData) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -387,9 +411,8 @@ export default class CthulhuEternalRoll extends Roll { | ||||
|     cardData.isLowWP = this.isLowWP | ||||
|     cardData.isZeroWP = this.isZeroWP | ||||
|     cardData.isExhausted = this.isExhausted | ||||
|  | ||||
|  | ||||
|     console.log(cardData) | ||||
|     cardData.isNudgedRoll = this.isNudgedRoll | ||||
|     cardData.wpCost = this.wpCost | ||||
|  | ||||
|     cardData.cssClass = cardData.css.join(" ") | ||||
|     cardData.tooltip = isPrivate ? "" : await this.getTooltip() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user