#42 Amélioration messages de tchat

* Appel à la chance
* compétences
* jets généraux (remplace table résolution, carac
 et cas particuliers)

* Attaque: en cours
This commit is contained in:
Vincent Vandemeulebrouck
2021-01-01 03:25:48 +01:00
parent 4ed47a1dd3
commit ee86c0e5ae
14 changed files with 271 additions and 83 deletions

View File

@ -62,7 +62,7 @@ export class RdDCombat {
content: message,
whisper: ChatUtility.getWhisperRecipients("blindroll", recipient.name),
};
// envoyer le message au destinataire
if (!game.user.isGM || recipient.hasPlayerOwner) {
let data = {
@ -73,7 +73,7 @@ export class RdDCombat {
rollMode: true
};
mergeObject(data, chatMessage);
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: topic, data: data});
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: topic, data: data });
} else {
chatMessage.whisper = [game.user];
}
@ -224,12 +224,16 @@ export class RdDCombat {
/* -------------------------------------------- */
_onAttaqueParticuliere(rollData) {
console.log("RdDCombat.onAttaqueParticuliere >>>", rollData);
let message = "<strong>Réussite particulière en attaque</strong>";
message += "<br><a class='chat-card-button' id='particuliere-attaque' data-mode='force' data-attackerId='" + this.attackerId + "'>Attaquer en Force</a>";
// Finesse et Rapidité seulement en mêlée et si la difficulté libre est de -1 minimum
let message = `
<h4 class="rdd-roll-part"><strong>Réussite particulière en attaque</strong></h4>
<br><a class='chat-card-button' id='particuliere-attaque' data-mode='force' data-attackerId='${this.attackerId}'>Attaquer en Force</a>
`;
if (rollData.selectedCarac.label == "Mêlée" && rollData.diffLibre < 0) {
message += "<br><a class='chat-card-button' id='particuliere-attaque' data-mode='rapidite' data-attackerId='" + this.attackerId + "'>Attaquer en Rapidité</a>";
message += "<br><a class='chat-card-button' id='particuliere-attaque' data-mode='finesse' data-attackerId='" + this.attackerId + "'>Attaquer en Finesse</a>";
message += `
<br><a class='chat-card-button' id='particuliere-attaque' data-mode='rapidite' data-attackerId='${this.attackerId}'>Attaquer en Rapidité</a>
<br><a class='chat-card-button' id='particuliere-attaque' data-mode='finesse' data-attackerId='${this.attackerId}'>Attaquer en Finesse</a>";
`
}
game.system.rdd.rollDataHandler[this.attackerId] = rollData;
// TODO: use a dialog?
@ -240,34 +244,42 @@ export class RdDCombat {
async _onAttaqueNormale(rollData) {
console.log("RdDCombat.onAttaqueNormale >>>", rollData);
let explications = "";
rollData.dmg = RdDBonus.dmg(rollData, this.attacker.getBonusDegat(), this.defender.isEntiteCauchemar());
if (this.target) {
explications += "<br><strong>Cible</strong> : " + this.defender.data.name;
}
explications += "<br>Encaissement à " + Misc.toSignedString(rollData.dmg.total) + " (" + rollData.dmg.loc.label + ")";
// Save rollData for defender
game.system.rdd.rollDataHandler[this.attackerId] = duplicate(rollData);
// Message spécial pour la rapidité, qui reste difficile à gérer automatiquement
if (rollData.particuliereAttaque == 'rapidite') {
explications += "<br>Vous avez attaqué en Rapidité. Vous pourrez faire une deuxième attaque, ou utiliser votre arme pour vous défendre.";
}
// Final chat message
let chatOptions = {
content: "<strong>Test : " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong>"
+ RdDResolutionTable.explainRollData(rollData)
+ explications
+ RdDResolutionTable.explainRollData(rollData)
+ explications
}
ChatUtility.chatWithRollMode(chatOptions, this.attacker.name)
rollData.show = {
cible: this.target ? this.defender.data.name : 'la cible',
isRecul : (rollData.particuliereAttaque == 'force' || rollData.tactique == 'charge')
}
ChatUtility.chatWithRollMode(
{ content: await RdDResolutionTable.explainRollDataV2(rollData, 'chat-resultat-attaque.html') },
this.name)
if (!await this.accorderEntite('avant-defense')) {
return;
}
if (this.target) {
this._sendMessageDefense(rollData);
}
@ -593,8 +605,8 @@ export class RdDCombat {
await this.computeRecul(rollData, true);
this._sendMessageEncaisser(rollData.attackerRoll);
}
/* -------------------------------------------- */
async computeDeteriorationArme(rollData) {
const attackerRoll = rollData.attackerRoll;
@ -678,7 +690,7 @@ export class RdDCombat {
}
/* -------------------------------------------- */
_sendMessageEncaisser(rollData){
_sendMessageEncaisser(rollData) {
let message = "<strong>" + this.defender.name + "</strong> doit:" + this._buildMessageEncaisser(rollData);
RdDCombat._sendRollMessage(this.attacker, this.defender, this.defenderTokenId, "msg_encaisser", message, rollData);
}