v11 - report v10.7.20 #656

Merged
uberwald merged 5 commits from VincentVk/foundryvtt-reve-de-dragon:v11 into v11 2023-06-19 15:36:54 +02:00
Showing only changes of commit ffd80394d3 - Show all commits

View File

@ -104,6 +104,7 @@ export class RdDEmpoignade {
} }
return undefined; return undefined;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static getMalusTaille(emp, attacker, defender) { static getMalusTaille(emp, attacker, defender) {
// Si pas empoigné, alors 0 // Si pas empoigné, alors 0
@ -121,6 +122,43 @@ export class RdDEmpoignade {
return 0 return 0
} }
static isActionAutorisee(mode, attacker, defender) {
const acting = RdDEmpoignade.isActionDefenseur(mode) ? defender : attacker;
if (acting.getUserLevel(game.user) < CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER) {
ui.notifications.warn(`Vous n'êtes pas autorisé à choisir l'action de ${acting.name}`)
return false;
}
return true
}
static isActionDefenseur(mode) {
switch (mode) {
case "liberer":
case "contrer-empoigner":
return true;
}
return false;
}
/* -------------------------------------------- */
static async onAttaqueEmpoignade(attacker, defender) {
if (!RdDEmpoignade.isActionAutorisee("empoigner", attacker, defender)) {
return
}
let empoignade = RdDEmpoignade.getEmpoignade(attacker, defender)
const isNouvelle = empoignade == undefined;
empoignade = empoignade ?? (await RdDEmpoignade.createEmpoignade(attacker, defender))
//console.log("W.", empoignade, defender.hasArmeeMeleeEquipee())
if ((isNouvelle || empoignade.system.pointsemp == 0) && defender.hasArmeeMeleeEquipee()) {
ChatUtility.createChatWithRollMode(attacker.name, {
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-empoignade-valider.html`, { attacker: attacker, defender: defender })
})
} else {
await this.onAttaqueEmpoignadeValidee(attacker, defender)
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async onAttaqueEmpoignadeValidee(attacker, defender) { static async onAttaqueEmpoignadeValidee(attacker, defender) {
let empoignade = RdDEmpoignade.getEmpoignade(attacker, defender) let empoignade = RdDEmpoignade.getEmpoignade(attacker, defender)
@ -129,6 +167,10 @@ export class RdDEmpoignade {
let mode = (empoignade && empoignade.system.empoigneurid == attacker.id) ? "empoigner" : "liberer" let mode = (empoignade && empoignade.system.empoigneurid == attacker.id) ? "empoigner" : "liberer"
if (!RdDEmpoignade.isActionAutorisee(mode, attacker, defender)) {
return
}
let rollData = { let rollData = {
mode, empoignade, attacker, defender, mode, empoignade, attacker, defender,
isEmpoignade: true, isEmpoignade: true,
@ -147,21 +189,6 @@ export class RdDEmpoignade {
} }
} }
/* -------------------------------------------- */
static async onAttaqueEmpoignade(attacker, defender) {
let empoignade = RdDEmpoignade.getEmpoignade(attacker, defender)
const isNouvelle = empoignade == undefined;
empoignade = empoignade ?? (await RdDEmpoignade.createEmpoignade(attacker, defender))
//console.log("W.", empoignade, defender.hasArmeeMeleeEquipee())
if ((isNouvelle || empoignade.system.pointsemp == 0) && defender.hasArmeeMeleeEquipee()) {
ChatUtility.createChatWithRollMode(attacker.name, {
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-empoignade-valider.html`, { attacker: attacker, defender: defender })
})
} else {
await this.onAttaqueEmpoignadeValidee(attacker, defender)
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async onAttaqueEmpoignadeFromItem(empoignade) { static async onAttaqueEmpoignadeFromItem(empoignade) {
let attacker = game.actors.get(empoignade.system.empoigneurid) let attacker = game.actors.get(empoignade.system.empoigneurid)
@ -206,6 +233,10 @@ export class RdDEmpoignade {
static async onDefenseEmpoignade(attackerRoll, mode, competenceName = "Corps à corps", carac = "melee") { static async onDefenseEmpoignade(attackerRoll, mode, competenceName = "Corps à corps", carac = "melee") {
let attacker = game.actors.get(attackerRoll.attacker.id) let attacker = game.actors.get(attackerRoll.attacker.id)
let defender = game.actors.get(attackerRoll.defender.id) let defender = game.actors.get(attackerRoll.defender.id)
if (!RdDEmpoignade.isActionAutorisee(mode, attacker, defender)) {
return
}
let empoignade = this.getEmpoignade(attacker, defender) let empoignade = this.getEmpoignade(attacker, defender)
if (!empoignade) { if (!empoignade) {
@ -286,16 +317,15 @@ export class RdDEmpoignade {
let defender = game.actors.get(empoignade.system.empoigneid) let defender = game.actors.get(empoignade.system.empoigneid)
let emp = RdDEmpoignade.getEmpoignadeById(defender, empoignade.system.empoignadeid) let emp = RdDEmpoignade.getEmpoignadeById(defender, empoignade.system.empoignadeid)
await defender.deleteEmbeddedDocuments('Item', [emp._id]) await defender.deleteEmbeddedDocuments('Item', [emp._id])
//let attacker = game.actors.get(empoignade.system.empoigneurid)
//emp = RdDEmpoignade.getEmpoignadeById(attacker, empoignade.system.empoignadeid)
//await attacker.deleteEmbeddedDocuments('Item', [emp._id])
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async entrainerAuSol(rollData) { static async entrainerAuSol(rollData) {
let attacker = game.actors.get(rollData.attacker.id) let attacker = game.actors.get(rollData.attacker.id)
let defender = game.actors.get(rollData.defender.id) let defender = game.actors.get(rollData.defender.id)
if (!RdDEmpoignade.isActionAutorisee("attaquant", attacker, defender)) {
return
}
let empoignade = this.getEmpoignade(attacker, defender) let empoignade = this.getEmpoignade(attacker, defender)
empoignade.system.ausol = true empoignade.system.ausol = true
@ -312,6 +342,9 @@ export class RdDEmpoignade {
static async projeterAuSol(rollData) { static async projeterAuSol(rollData) {
let attacker = game.actors.get(rollData.attacker.id) let attacker = game.actors.get(rollData.attacker.id)
let defender = game.actors.get(rollData.defender.id) let defender = game.actors.get(rollData.defender.id)
if (!RdDEmpoignade.isActionAutorisee("attaquant", attacker, defender)) {
return
}
let empoignade = this.getEmpoignade(attacker, defender) let empoignade = this.getEmpoignade(attacker, defender)
await defender.setEffect(STATUSES.StatusProne, true); await defender.setEffect(STATUSES.StatusProne, true);
@ -320,10 +353,14 @@ export class RdDEmpoignade {
let msg = await RdDResolutionTable.displayRollData(rollData, attacker, 'chat-empoignade-projeter-sol.html'); let msg = await RdDResolutionTable.displayRollData(rollData, attacker, 'chat-empoignade-projeter-sol.html');
RdDEmpoignade.storeRollEmpoignade(msg, rollData); RdDEmpoignade.storeRollEmpoignade(msg, rollData);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async perteEndurance(rollData, perteMode) { static async perteEndurance(rollData, perteMode) {
let attacker = game.actors.get(rollData.attacker.id) let attacker = game.actors.get(rollData.attacker.id)
let defender = game.actors.get(rollData.defender.id) let defender = game.actors.get(rollData.defender.id)
if (!RdDEmpoignade.isActionAutorisee("attaquant", attacker, defender)) {
return
}
let empoignade = this.getEmpoignade(attacker, defender) let empoignade = this.getEmpoignade(attacker, defender)
//console.log("Perte d'endurance :!!!", perteMode) //console.log("Perte d'endurance :!!!", perteMode)