Automatisations de combats, WIP
This commit is contained in:
@@ -118,7 +118,7 @@ export class HawkmoonActor extends Actor {
|
||||
}
|
||||
getArtefacts() {
|
||||
return this.getItemSorted(["artefact"])
|
||||
}
|
||||
}
|
||||
getArmors() {
|
||||
return this.getItemSorted(["protection"])
|
||||
}
|
||||
@@ -382,10 +382,33 @@ export class HawkmoonActor extends Actor {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
changeEtatCombativite(value) {
|
||||
let sante = duplicate(this.system.sante)
|
||||
sante.etat += Number(value)
|
||||
sante.etat = Math.max(sante.etat, 0)
|
||||
sante.etat = Math.min(sante.etat, 5)
|
||||
this.update({ 'system.sante': sante })
|
||||
if (sante.etat == this.system.sante.nbcombativite) {
|
||||
ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
|
||||
}
|
||||
// Gestion des états affaibli et très affaibli
|
||||
if (sante.etat == this.system.sante.nbcombativite-2 || sante.etat == this.system.sante.nbcombativite-1) {
|
||||
if (sante.etat == this.system.sante.nbcombativite-2 && this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "encaissement")) {
|
||||
ChatMessage.create({ content: `<strong>${this.name} ne subit pas les 2 adversités rouge grâce à Encaissement. Pensez à les ajouter à la fin de la scène !</strong>` })
|
||||
} else if (sante.etat == this.system.sante.nbcombativite-1 && this.items.find(item => item.type == "talent" && item.name.toLowerCase().includes("vaillant"))) {
|
||||
ChatMessage.create({ content: `<strong>${this.name} ne subit pas les 2 adversités rouge grâce à Vaillant. Pensez à les ajouter à la fin de la scène !</strong>` })
|
||||
} else {
|
||||
ChatMessage.create({ content: `<strong>${this.name} subit 2 adversités rouge !</strong>` })
|
||||
this.incDecAdversite("rouge", 2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async equipGear(equipmentId) {
|
||||
let item = this.items.find(item => item.id == equipmentId);
|
||||
if (item && item.system.data) {
|
||||
if (item?.system?.data) {
|
||||
let update = { _id: item.id, "system.equipped": !item.system.equipped };
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
@@ -434,7 +457,7 @@ export class HawkmoonActor extends Actor {
|
||||
if (objetQ) {
|
||||
let newQ = objetQ.system.quantite + incDec
|
||||
newQ = Math.max(newQ, 0)
|
||||
const updated = await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'system.quantite': newQ }]); // pdates one EmbeddedEntity
|
||||
await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'system.quantite': newQ }]); // pdates one EmbeddedEntity
|
||||
}
|
||||
}
|
||||
|
||||
@@ -538,6 +561,8 @@ export class HawkmoonActor extends Actor {
|
||||
rollData.nbBA = this.system.bonneaventure.actuelle
|
||||
rollData.nbAdversites = this.getTotalAdversite()
|
||||
rollData.talents = []
|
||||
rollData.attrKey2 = "none"
|
||||
rollData.coupDevastateur = this.items.find(it => it.type =="talent" && it.name.toLowerCase() == "coup dévastateur" && !it.system.used)
|
||||
|
||||
if (attrKey) {
|
||||
rollData.attrKey = attrKey
|
||||
@@ -597,31 +622,42 @@ export class HawkmoonActor extends Actor {
|
||||
if (arme.type == "arme") {
|
||||
arme = this.prepareArme(arme)
|
||||
}
|
||||
console.log("DEGATS", arme)
|
||||
console.log("DEGATS", arme, targetVigueur, rollDataInput)
|
||||
let roll
|
||||
let bonus = 0
|
||||
let bonus2 = 0
|
||||
|
||||
if (rollDataInput?.applyCoupDevastateur) {
|
||||
bonus2 = Math.floor(this.system.attributs.pui.value / 2)
|
||||
let talent = this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "coup dévastateur")
|
||||
this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }])
|
||||
}
|
||||
|
||||
if (rollDataInput?.isHeroique) {
|
||||
if (rollDataInput?.attaqueCharge) {
|
||||
bonus = 5
|
||||
}
|
||||
roll = new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus).roll({ async: false })
|
||||
roll = new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll({ async: false })
|
||||
} else {
|
||||
if (rollDataInput?.attaqueCharge) {
|
||||
bonus = 3
|
||||
}
|
||||
roll = new Roll("1d10+" + arme.system.totalDegats + "+" + bonus).roll({ async: false })
|
||||
roll = new Roll("1d10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll({ async: false })
|
||||
}
|
||||
await HawkmoonUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
||||
let nbEtatPerdus = 0
|
||||
if (targetVigueur) {
|
||||
nbEtatPerdus = Math.floor(roll.total / targetVigueur)
|
||||
}
|
||||
console.log(roll)
|
||||
let rollData = {
|
||||
arme: arme,
|
||||
finalResult: roll.total,
|
||||
formula: roll.formula,
|
||||
alias: this.name,
|
||||
actorImg: this.img,
|
||||
actorId: this.id,
|
||||
defenderTokenId: rollDataInput?.defenderTokenId,
|
||||
actionImg: arme.img,
|
||||
targetVigueur: targetVigueur,
|
||||
nbEtatPerdus: nbEtatPerdus
|
||||
@@ -630,5 +666,9 @@ export class HawkmoonActor extends Actor {
|
||||
content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-degats-result.html`, rollData)
|
||||
})
|
||||
|
||||
if (rollDataInput?.defenderTokenId && nbEtatPerdus) {
|
||||
HawkmoonUtility.applyCombativite(rollDataInput, nbEtatPerdus)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user