Notion d'équipement/inventaire
This commit is contained in:
@ -3267,10 +3267,9 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async equiperObjet(itemID) {
|
||||
let item = this.getEmbeddedDocument('Item', itemID);
|
||||
if (item?.system) {
|
||||
if (item && ['arme', 'armure'].includes(item.type)) {
|
||||
const isEquipe = !item.system.equipe;
|
||||
let update = { _id: item.id, "system.equipe": isEquipe };
|
||||
await this.updateEmbeddedDocuments('Item', [update]);
|
||||
await this.updateEmbeddedDocuments('Item', [{ _id: item.id, "system.equipe": isEquipe }]);
|
||||
this.computeEncombrementTotalEtMalusArmure(); // Mise à jour encombrement
|
||||
if (isEquipe)
|
||||
this.verifierForceMin(item);
|
||||
@ -3569,7 +3568,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
getFortune() {
|
||||
return this.itemTypes['monnaie']
|
||||
.map(m => Number(m.system.valeur_deniers) * Number(m.system.quantite))
|
||||
.map(m => Number(m.system.cout) * Number(m.system.quantite))
|
||||
.reduce(Misc.sum(), 0);
|
||||
}
|
||||
|
||||
|
@ -4,22 +4,22 @@ import { LOG_HEAD } from "./constants.js";
|
||||
const MONNAIE_ETAIN = {
|
||||
name: "Etain (1 denier)", type: 'monnaie',
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp",
|
||||
system: { quantite: 0, valeur_deniers: 1, encombrement: 0.001, description: "" }
|
||||
system: { quantite: 0, cout: 1, encombrement: 0.001, description: "" }
|
||||
};
|
||||
const MONNAIE_BRONZE = {
|
||||
name: "Bronze (10 deniers)", type: 'monnaie',
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_bronze_epees.webp",
|
||||
system: { quantite: 0, valeur_deniers: 10, encombrement: 0.002, description: "" }
|
||||
system: { quantite: 0, cout: 10, encombrement: 0.002, description: "" }
|
||||
};
|
||||
const MONNAIE_ARGENT = {
|
||||
name: "Argent (1 sol)", type: 'monnaie',
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_argent_sol.webp",
|
||||
system: { quantite: 0, valeur_deniers: 100, encombrement: 0.003, description: "" }
|
||||
system: { quantite: 0, cout: 100, encombrement: 0.003, description: "" }
|
||||
};
|
||||
const MONNAIE_OR = {
|
||||
name: "Or (10 sols)", type: 'monnaie',
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_or_sol.webp",
|
||||
system: { quantite: 0, valeur_deniers: 1000, encombrement: 0.004, description: "" }
|
||||
system: { quantite: 0, cout: 1000, encombrement: 0.004, description: "" }
|
||||
};
|
||||
|
||||
const MONNAIES_STANDARD = [MONNAIE_ETAIN, MONNAIE_BRONZE, MONNAIE_ARGENT, MONNAIE_OR];
|
||||
@ -32,7 +32,7 @@ export class Monnaie {
|
||||
|
||||
static monnaiesManquantes(actor) {
|
||||
const disponibles = actor.itemTypes['monnaie'];
|
||||
const manquantes = MONNAIES_STANDARD.filter(standard => !disponibles.find(disponible => Monnaie.deValeur(disponible, standard.system?.valeur_deniers)));
|
||||
const manquantes = MONNAIES_STANDARD.filter(standard => !disponibles.find(disponible => Monnaie.deValeur(disponible, standard.system?.cout)));
|
||||
if (manquantes.length > 0) {
|
||||
console.error(`${LOG_HEAD} monnaiesManquantes pour ${actor.name}`, manquantes, ' avec monnaies', disponibles, MONNAIES_STANDARD);
|
||||
}
|
||||
@ -40,7 +40,7 @@ export class Monnaie {
|
||||
}
|
||||
|
||||
static deValeur(monnaie, valeur) {
|
||||
return valeur == monnaie.system.valeur_deniers
|
||||
return valeur == monnaie.system.cout
|
||||
}
|
||||
|
||||
static arrondiDeniers(sols) {
|
||||
@ -48,7 +48,7 @@ export class Monnaie {
|
||||
}
|
||||
|
||||
static triValeurDenier() {
|
||||
return Misc.ascending(item => item.system.valeur_deniers)
|
||||
return Misc.ascending(item => item.system.cout)
|
||||
}
|
||||
|
||||
static async creerMonnaiesStandard(actor) {
|
||||
@ -69,7 +69,7 @@ export class Monnaie {
|
||||
let reste = fortune;
|
||||
let monnaies = actor.itemTypes['monnaie'];
|
||||
let updates = [];
|
||||
let parValeur = Misc.classifyFirst(monnaies, it => it.system.valeur_deniers);
|
||||
let parValeur = Misc.classifyFirst(monnaies, it => it.system.cout);
|
||||
for (let valeur of [1000, 100, 10, 1]) {
|
||||
const itemPiece = parValeur[valeur];
|
||||
if (itemPiece) {
|
||||
|
@ -172,7 +172,7 @@ export class RdDItem extends Item {
|
||||
}
|
||||
|
||||
valeurDeniers() {
|
||||
return Math.max(Math.round(this.system.cout ? (this.system.cout * 100) : (this.system.valeur_deniers ?? 0)), 0)
|
||||
return Math.max(Math.round(this.system.cout ? (this.system.cout * 100) : (this.system.cout ?? 0)), 0)
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
@ -494,7 +494,7 @@ export class RdDItem extends Item {
|
||||
/* -------------------------------------------- */
|
||||
_monnaieChatData() {
|
||||
return [
|
||||
`<b>Valeur en Deniers</b>: ${this.system.valeur_deniers}`,
|
||||
`<b>Valeur en Deniers</b>: ${this.system.cout}`,
|
||||
`<b>Encombrement</b>: ${this.system.encombrement}`
|
||||
]
|
||||
}
|
||||
|
@ -195,7 +195,8 @@ class _10_2_10_DesirLancinant_IdeeFixe extends Migration {
|
||||
categorie = 'ideefixe';
|
||||
name = it.name.replace('Idée fixe : ', '')
|
||||
}
|
||||
return { _id: it.id, name: name,
|
||||
return {
|
||||
_id: it.id, name: name,
|
||||
'system.ideefixe': undefined,
|
||||
'system.lancinant': undefined,
|
||||
'system.categorie': categorie
|
||||
@ -206,8 +207,36 @@ class _10_2_10_DesirLancinant_IdeeFixe extends Migration {
|
||||
await this.applyItemsUpdates(items => items
|
||||
.filter(it => ['queue', 'ombre'].includes(it.type))
|
||||
.map(it => this.migrateQueue(it))
|
||||
//.filter(it => it.system.categorie )
|
||||
);
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _10_3_0_Inventaire extends Migration {
|
||||
get code() { return "migration-equipement-inventaire"; }
|
||||
get version() { return "10.3.0"; }
|
||||
|
||||
async migrate() {
|
||||
await this.applyItemsUpdates(items => {
|
||||
return this._updatesMonnaies(items)
|
||||
.concat(this._updatesNonEquipe(items))
|
||||
.concat(this._updatesObjets(items))
|
||||
});
|
||||
}
|
||||
|
||||
_updatesNonEquipe(items) {
|
||||
return items
|
||||
.filter(it => ['munition'].includes(it.type))
|
||||
.map(it => { return { _id: it.id, 'system.equipe': undefined } });
|
||||
}
|
||||
_updatesObjets(items) {
|
||||
return items
|
||||
.filter(it => ['objet'].includes(it.type))
|
||||
.map(it => { return { _id: it.id, 'system.resistance': undefined, 'system.equipe': undefined } });
|
||||
}
|
||||
_updatesMonnaies(items) {
|
||||
return items
|
||||
.filter(it => ['monnaie'].includes(it.type))
|
||||
.map(it => { return { _id: it.id, 'system.cout': it.system.valeur_deniers, 'system.valeur_deniers': undefined } });
|
||||
}
|
||||
}
|
||||
|
||||
@ -220,6 +249,7 @@ export class Migrations {
|
||||
new _10_0_33_MigrationNomsDraconic(),
|
||||
new _10_2_5_ArmesTirLancer(),
|
||||
new _10_2_10_DesirLancinant_IdeeFixe(),
|
||||
new _10_3_0_Inventaire()
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -890,12 +890,12 @@ export class RdDUtility {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static createMonnaie(name, valeur_deniers, img = "", enc = 0.01) {
|
||||
static createMonnaie(name, cout, img = "", enc = 0.01) {
|
||||
let piece = {
|
||||
name: name, type: 'monnaie', img: img, _id: randomID(16),
|
||||
dasystemta: {
|
||||
quantite: 0,
|
||||
valeur_deniers: valeur_deniers,
|
||||
cout: cout,
|
||||
encombrement: enc,
|
||||
description: ""
|
||||
}
|
||||
|
Reference in New Issue
Block a user