88 Gestion argent/commerce

This commit is contained in:
2021-01-01 21:11:56 +01:00
parent 3c2241197a
commit dc57058465
13 changed files with 459 additions and 30 deletions

View File

@ -98,35 +98,35 @@ export class RdDActor extends Actor {
/**
* Prepare Character type specific data
*/
_prepareCharacterData(actorData) {
async _prepareCharacterData(actorData) {
// Initialize empty items
RdDUtility.computeCarac(actorData.data);
this.computeEncombrementTotalEtMalusArmure();
this.computeEtatGeneral();
this.checkMonnaiePresence();
await this.checkMonnaiePresence();
}
/* -------------------------------------------- */
checkMonnaiePresence( ) { // Ajout opportuniste si les pièces n'existent pas.
async checkMonnaiePresence( ) { // Ajout opportuniste si les pièces n'existent pas.
let piece = this.data.items.find( item => item.type =='monnaie' && Number(item.data.valeur_deniers) == 1);
if (!piece) {
let piece = RdDUtility.createMonnaie("Etain (1 denier)", 1);
this.createOwnedItem( piece );
let piece = RdDUtility.createMonnaie("Etain (1 denier)", 1, "systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp" );
const updated = await this.createOwnedItem( piece );
}
piece = this.data.items.find( item => item.type =='monnaie' && Number(item.data.valeur_deniers) == 10);
if (!piece) {
let piece = RdDUtility.createMonnaie("Bronze (10 deniers)", 10);
this.createOwnedItem( piece );
let piece = RdDUtility.createMonnaie("Bronze (10 deniers)", 10, "systems/foundryvtt-reve-de-dragon/icons/objets/piece_bronze_epees.webp");
const updated = await this.createOwnedItem( piece );
}
piece = this.data.items.find( item => item.type =='monnaie' && Number(item.data.valeur_deniers) == 100);
if (!piece) {
let piece = RdDUtility.createMonnaie("Argent (1 sol)", 100);
this.createOwnedItem( piece );
let piece = RdDUtility.createMonnaie("Argent (1 sol)", 100, "systems/foundryvtt-reve-de-dragon/icons/objets/piece_argent_sol.webp");
const updated = await this.createOwnedItem( piece );
}
piece = this.data.items.find( item => item.type =='monnaie' && Number(item.data.valeur_deniers) == 1000);
if (!piece) {
let piece = RdDUtility.createMonnaie("Or (10 sols)", 1000);
this.createOwnedItem( piece );
let piece = RdDUtility.createMonnaie("Or (10 sols)", 1000, "systems/foundryvtt-reve-de-dragon/icons/objets/piece_or_sol.webp");
const updated = await this.createOwnedItem( piece );
}
}
@ -2147,7 +2147,7 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
payerDenier( sumDenier ) {
async payerDenier( sumDenier, dataObj ) {
sumDenier = Number(sumDenier);
let denierDisponible = 0;
let monnaie = this.data.items.filter( item => item.type =='monnaie');
@ -2155,16 +2155,27 @@ export class RdDActor extends Actor {
denierDisponible += piece.data.valeur_deniers * Number(piece.data.quantite);
}
console.log("DENIER", game.user.character, sumDenier, denierDisponible);
let msg = "";
if ( denierDisponible >= sumDenier) {
denierDisponible -= sumDenier;
this.optimizeArgent(denierDisponible);
msg = `Vous avez payé <strong>${sumDenier} Deniers</strong>, qui ont été soustraits de votre argent.`;
} else {
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
content : "Vous n'avez pas assez d'argent pour paye cette somme !"
};
ChatMessage.create( message );
msg = "Vous n'avez pas assez d'argent pour paye cette somme !";
}
if ( dataObj ) {
dataObj.payload.data.cout = sumDenier / 100; // Mise à jour du prix en sols , avec le prix acheté
await this.createOwnedItem( dataObj.payload );
msg += `<br>Et l'objet <strong>${dataObj.payload.name}</strong> a été ajouté à votre inventaire.`;
}
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
content : msg
};
ChatMessage.create( message );
}
/* -------------------------------------------- */