Add ranged attacks for monsters

This commit is contained in:
2026-04-29 20:27:20 +02:00
parent b8174d5e22
commit 59ff098fca
34 changed files with 433 additions and 217 deletions
+13 -12
View File
@@ -47,11 +47,11 @@ export default class D30Roll {
}
/**
* Récupère le résultat d'un jet de D30
* Récupère le résultat d'un jet de D30 sous forme d'objet structuré.
* @param {number} diceValue La valeur du dé (1-30)
* @param {string} rollType Le type de jet externe (ex: "weapon-attack", "spell-attack", etc.)
* @param {Object} weapon L'arme ou l'objet utilisé (optionnel, nécessaire pour certains types)
* @returns {string|null} Le résultat correspondant ou null si vide/non trouvé
* @returns {Object|null} L'objet effet `{ type, description, ...fields }` ou null si aucun effet
*/
static getResult(diceValue, rollType, weapon = null) {
if (!this.resultsTable) {
@@ -59,13 +59,11 @@ export default class D30Roll {
return null
}
// Validation des paramètres
if (diceValue < 1 || diceValue > 30) {
console.warn(`D30Roll | Invalid dice value: ${diceValue}. Must be between 1 and 30.`)
return null
}
// Convert external rollType to internal rollType
const internalType = this.convertToInternalType(rollType, weapon)
if (!internalType) {
@@ -85,13 +83,16 @@ export default class D30Roll {
}
const result = resultEntry[internalType]
return result ?? null
}
// Retourne null si le résultat est "empty"
if (result === "empty" || !result) {
return null
}
return result
/**
* Retourne le type d'effet d'un résultat D30.
* @param {Object|null} result L'objet retourné par getResult()
* @returns {string|null} Le type d'effet ou null
*/
static getEffectType(result) {
return result?.type ?? null
}
/**
@@ -177,11 +178,11 @@ export default class D30Roll {
/**
* Vérifie si un résultat est vide
* @param {string} result Le résultat à vérifier
* @param {Object|null} result Le résultat à vérifier
* @returns {boolean} True si le résultat est vide
*/
static isEmptyResult(result) {
return !result || result === "empty"
return !result || !result.type
}
/**