Merge branch 'v1.4-fix' into 'v1.4'

Plusieurs fixes

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!245
This commit is contained in:
2021-05-20 16:00:43 +00:00
8 changed files with 96 additions and 75 deletions

View File

@ -1030,6 +1030,7 @@ export class RdDActor extends Actor {
}
else if (dest?.isEquipementSimilaire(item)) {
await this.regrouperEquipementsSimilaires(item, dest);
result = false;
}
}
}
@ -1789,7 +1790,7 @@ export class RdDActor extends Actor {
async saouler(forceAlcool, alcool = undefined) {
const actorData = Misc.data(this);
let ethylisme = duplicate(actorData.data.compteurs.ethylisme);
const etat = this.getEtatGeneral({ ethylisme: true });
const nbDoses = Number(actorData.data.compteurs.ethylisme.nb_doses || 0);
const ethylismeData = {
@ -1800,7 +1801,7 @@ export class RdDActor extends Actor {
jetVie: {
forceAlcool: forceAlcool,
nbDoses: nbDoses,
selectedCarac: actorData.data.carac.constitution,
selectedCarac: actorData.data.sante.vie,
carac: actorData.data.carac,
caracValue: actorData.data.sante.vie.max,
finalLevel: etat + forceAlcool - nbDoses,
@ -1809,29 +1810,30 @@ export class RdDActor extends Actor {
}
await RdDResolutionTable.rollData(ethylismeData.jetVie);
this._appliquerExperienceRollData(ethylismeData.jetVie);
RollDataAjustements.calcul(ethylismeData.jetVie, this);
if (ethylismeData.jetVie.rolled.isSuccess) {
ethylisme.nb_doses++;
} else {
ethylisme.value = Math.max(ethylisme.value - 1, -7);
ethylisme.nb_doses = 0;
let perte = await RdDDice.rollTotal("1d6", {showDice:true});
let perte = await RdDDice.rollTotal("1d6", { showDice: true });
ethylismeData.perteEndurance = await this.santeIncDec("endurance", -perte, { ethylisme: true });
if (!ethylisme.jet_moral) {
ethylismeData.jetMoral = await this._jetMoral('heureuse');
if (ethylismeData.jetMoral.ajustement == 1) {
ethylismeData.moralAlcool ='heureux';
ethylismeData.moralAlcool = 'heureux';
ethylisme.jet_moral = true;
} else if (ethylisme.value == -1) {
ethylismeData.jetMoral.ajustement = -1;
ethylismeData.moralAlcool ='triste';
ethylismeData.moralAlcool = 'triste';
ethylisme.jet_moral = true;
await this.moralIncDec(-1);
}
}
if (ethylisme.value<0) {
if (ethylisme.value < 0) {
// Qui a bu boira (p 164)
ethylismeData.jetVolonte = {
selectedCarac: actorData.data.carac.volonte,
@ -1841,13 +1843,14 @@ export class RdDActor extends Actor {
showDice: true
}
await RdDResolutionTable.rollData(ethylismeData.jetVolonte);
this._appliquerExperienceRollData(ethylismeData.jetVolonte);
RollDataAjustements.calcul(ethylismeData.jetVolonte, this);
}
}
ethylismeData.ajustementEthylique = ethylisme.value;
ethylismeData.nomEthylisme = RdDUtility.getNomEthylisme(ethylisme.value);
ethylismeData.ajustementEthylique = ethylisme.value;
ethylismeData.nomEthylisme = RdDUtility.getNomEthylisme(ethylisme.value);
ethylismeData.doses = ethylisme.nb_doses;
await this.update({ 'data.compteurs.ethylisme': ethylisme });
await RdDResolutionTable.displayRollData(ethylismeData, this, 'chat-resultat-ethylisme.html');
}
@ -2315,7 +2318,9 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
_appliquerExperienceRollData(rollData) {
const callback = this.createCallbackExperience();
if (callback.condition(rollData)) { callback.action(rollData); }
if (callback.condition(rollData)) {
callback.action(rollData);
}
}
/* -------------------------------------------- */
@ -2777,6 +2782,7 @@ export class RdDActor extends Actor {
return { result: false, xpcarac: 0, xpCompetence: 0 };
}
if (caracName == 'Vie') caracName = 'constitution';
if (caracName == 'derobee') caracName = 'agilite';
if (caracName == 'reve-actuel') caracName = 'reve';
let xp = Math.abs(rolled.finalLevel);
@ -3405,7 +3411,7 @@ export class RdDActor extends Actor {
ui.notifications.info("Inutile de se vendre à soi-même");
return;
}
if (!game.user.isGM) {
if (!Misc.isElectedUser()) {
RdDActor.remoteActorCall({
userId: Misc.connectedGMOrUser(),
actorId: this.vendeur?.id ?? this.acheteur?.id,
@ -3449,10 +3455,14 @@ export class RdDActor extends Actor {
if (acheteur) {
// TODO: achat depuis un compendium
const achat = duplicate(Misc.data(vendeur?.getObjet(itemId) ?? game.items.get(itemId)));
const itemData = Misc.data(vendeur?.getObjet(itemId) ?? game.items.get(itemId));
const achat = {
type: itemData.type,
img: itemData.img,
name: itemData.name,
data: itemData.data
}
achat.data.quantite = venteData.quantiteTotal;
achat._id = undefined;
// TODO: investigate bug - création marche mal...
await acheteur.createEmbeddedDocuments("Item", [achat]);
}
if (coutDeniers > 0) {
@ -3464,18 +3474,19 @@ export class RdDActor extends Actor {
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', venteData)
});
if (venteData.quantiteNbLots <= venteData.nombreLots) {
ChatUtility.removeChatMessageId(chatMessageIdVente);
if (!venteData.quantiteIllimite) {
if (venteData.quantiteNbLots <= venteData.nombreLots) {
ChatUtility.removeChatMessageId(chatMessageIdVente);
}
else {
venteData.quantiteNbLots -= venteData.nombreLots;
venteData.jsondata = JSON.stringify(venteData.item);
let newMessageVente = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData);
const messageVente = game.messages.get(chatMessageIdVente);
messageVente.update({ content: newMessageVente });
messageVente.render(true);
}
}
else {
venteData.quantiteNbLots -= venteData.nombreLots;
venteData.jsondata = JSON.stringify(venteData.item);
let newMessageVente = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData);
const messageVente = game.messages.get(chatMessageIdVente);
messageVente.update({ content: newMessageVente });
messageVente.render(true);
}
}
/* -------------------------------------------- */