forked from public/foundryvtt-reve-de-dragon
		
	Merge pull request 'Non à la dévaluation' (#594) from VincentVk/foundryvtt-reve-de-dragon:v10 into v10
Reviewed-on: public/foundryvtt-reve-de-dragon#594
This commit is contained in:
		
							
								
								
									
										102
									
								
								module/actor.js
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								module/actor.js
									
									
									
									
									
								
							| @@ -3642,20 +3642,13 @@ export class RdDActor extends Actor { | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |  | ||||||
|   getFortune() { |  | ||||||
|     return this.itemTypes['monnaie'] |  | ||||||
|       .map(m => Number(m.system.cout) * Number(m.system.quantite)) |  | ||||||
|       .reduce(Misc.sum(), 0); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   async payerSols(depense) { |   async payerSols(depense) { | ||||||
|     depense = Number(depense); |     depense = Number(depense); | ||||||
|     if (depense == 0) { |     if (depense == 0) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     let fortune = this.getFortune(); |     let fortune = Monnaie.getFortune(this); | ||||||
|     console.log("payer", game.user.character, depense, fortune); |     console.log("payer", game.user.character, depense, fortune); | ||||||
|     let msg = ""; |     let msg = ""; | ||||||
|     if (fortune >= depense) { |     if (fortune >= depense) { | ||||||
| @@ -3674,7 +3667,7 @@ export class RdDActor extends Actor { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   async depenserSols(sols) { |   async depenserSols(sols) { | ||||||
|     let reste = this.getFortune() - Number(sols); |     let reste = Monnaie.getFortune(this) - Number(sols); | ||||||
|     if (reste >= 0) { |     if (reste >= 0) { | ||||||
|       await Monnaie.optimiserFortune(this, reste); |       await Monnaie.optimiserFortune(this, reste); | ||||||
|     } |     } | ||||||
| @@ -3699,7 +3692,7 @@ export class RdDActor extends Actor { | |||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|       const fromActor = game.actors.get(fromActorId) |       const fromActor = game.actors.get(fromActorId) | ||||||
|       await Monnaie.optimiserFortune(this, sols + this.getFortune()); |       await Monnaie.optimiserFortune(this, sols + Monnaie.getFortune(this)); | ||||||
|  |  | ||||||
|       RdDAudio.PlayContextAudio("argent"); // Petit son |       RdDAudio.PlayContextAudio("argent"); // Petit son | ||||||
|       ChatMessage.create({ |       ChatMessage.create({ | ||||||
| @@ -3732,50 +3725,31 @@ export class RdDActor extends Actor { | |||||||
|       }); |       }); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     const acheteur = achat.acheteurId ? game.actors.get(achat.acheteurId) : undefined; |  | ||||||
|     const vendeur = achat.vendeurId ? game.actors.get(achat.vendeurId) : undefined; |  | ||||||
|     const vente = achat.vente; |  | ||||||
|     const itemId = vente.item._id; |  | ||||||
|     const isItemEmpilable = "quantite" in vente.item.system; |  | ||||||
|  |  | ||||||
|     const cout = Number(achat.prixTotal ?? 0); |     const cout = Number(achat.prixTotal ?? 0); | ||||||
|     achat.quantiteTotal = (achat.choix.nombreLots ?? 1) * (vente.tailleLot); |     const vente = achat.vente; | ||||||
|     if (acheteur) { |     const acheteur = achat.acheteurId ? game.actors.get(achat.acheteurId) : undefined; | ||||||
|       let resteAcheteur = await acheteur.depenserSols(cout); |     const vendeur = achat.vendeurId ? game.actors.get(achat.vendeurId) : undefined; | ||||||
|       if (resteAcheteur < 0) { |     let itemVendu = vendeur?.getObjet(vente.item._id); | ||||||
|         ChatUtility.notifyUser(achat.userId, 'warn', `Vous n'avez pas assez d'argent pour payer ${Math.ceil(cout / 100)} sols !`); |  | ||||||
|         return; |     if (vendeur && (itemVendu?.getQuantite() ?? 0) < achat.quantiteTotal) { | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     const itemVendu = vendeur?.getObjet(itemId); |  | ||||||
|     if (itemVendu) { |  | ||||||
|       if (isItemEmpilable ? (itemVendu.system.quantite < achat.quantiteTotal) : (achat.choix.nombreLots != 1)) { |  | ||||||
|         await acheteur?.ajouterSols(cout); |  | ||||||
|       ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a plus assez de ${vente.item.name} !`); |       ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a plus assez de ${vente.item.name} !`); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|       vendeur.ajouterSols(cout); |     if (Monnaie.getFortune(acheteur) < Number(cout)) { | ||||||
|       let resteQuantite = (itemVendu.system.quantite ?? 1) - achat.quantiteTotal; |       ChatUtility.notifyUser(achat.userId, 'warn', `Vous n'avez pas assez d'argent pour payer ${Math.ceil(cout / 100)} sols !`); | ||||||
|       if (resteQuantite == 0) { |       return; | ||||||
|         vendeur.deleteEmbeddedDocuments("Item", [itemId]) |  | ||||||
|       } |  | ||||||
|       else { |  | ||||||
|         vendeur.updateEmbeddedDocuments("Item", [{ _id: itemId, 'system.quantite': resteQuantite }]); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     achat.quantiteTotal = (achat.choix.nombreLots ?? 1) * (vente.tailleLot); | ||||||
|  |     if (vendeur) { | ||||||
|  |       await vendeur.ajouterSols(cout); | ||||||
|  |       await vendeur.decrementerQuantiteItem(itemVendu, achat.quantiteTotal,); | ||||||
|     } |     } | ||||||
|     if (acheteur) { |     if (acheteur) { | ||||||
|       const achatData = { |       await acheteur.depenserSols(cout); | ||||||
|         type: vente.item.type, |       let createdItemId = await acheteur.creerQuantiteItem(vente.item, achat.quantiteTotal); | ||||||
|         img: vente.item.img, |       await acheteur.consommerNourritureAchetee(achat, vente, createdItemId); | ||||||
|         name: vente.item.name, |  | ||||||
|         system: mergeObject(vente.item.system, { quantite: isItemEmpilable ? achat.quantiteTotal : undefined }), |  | ||||||
|       } |  | ||||||
|       let listeAchat = isItemEmpilable ? [achatData] : Array.from({ length: achat.quantiteTotal }, (_, i) => achatData) |  | ||||||
|       let items = await acheteur.createEmbeddedDocuments("Item", listeAchat); |  | ||||||
|       if (achat.choix.consommer && vente.item.type == 'nourritureboisson') { |  | ||||||
|         achat.choix.doses = achat.choix.nombreLots; |  | ||||||
|         await acheteur.consommerNourritureboisson(items[0].id, achat.choix, vente.actingUserId); |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|     if (cout > 0) { |     if (cout > 0) { | ||||||
|       RdDAudio.PlayContextAudio("argent"); |       RdDAudio.PlayContextAudio("argent"); | ||||||
| @@ -3804,6 +3778,42 @@ export class RdDActor extends Actor { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   async consommerNourritureAchetee(achat, vente, createdItemId) { | ||||||
|  |     if (achat.choix.consommer && vente.item.type == 'nourritureboisson' && createdItemId != undefined) { | ||||||
|  |       achat.choix.doses = achat.choix.nombreLots; | ||||||
|  |       await this.consommerNourritureboisson(createdItemId, achat.choix, vente.actingUserId); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async decrementerQuantiteItem(item, quantite) { | ||||||
|  |     let resteQuantite = (item.system.quantite ?? 1) - quantite; | ||||||
|  |     if (resteQuantite <= 0) { | ||||||
|  |       await this.deleteEmbeddedDocuments("Item", [item.id]); | ||||||
|  |       if (resteQuantite < 0) { | ||||||
|  |         ui.notifications.warn(`La quantité de ${item.name} était insuffisante, l'objet a donc été supprimé`) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     else if (resteQuantite > 0) { | ||||||
|  |       await this.updateEmbeddedDocuments("Item", [{ _id: item.id, 'system.quantite': resteQuantite }]); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async creerQuantiteItem(item, quantite) { | ||||||
|  |     const items = await this.createEmbeddedDocuments("Item", RdDActor.$prepareListeAchat(item, quantite)); | ||||||
|  |     return items.length > 0 ? items[0].id : undefined; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static $prepareListeAchat(item, quantite) { | ||||||
|  |     const isItemEmpilable = "quantite" in item.system; | ||||||
|  |     const achatData = { | ||||||
|  |       type: item.type, | ||||||
|  |       img: item.img, | ||||||
|  |       name: item.name, | ||||||
|  |       system: mergeObject(item.system, { quantite: isItemEmpilable ? quantite : undefined }), | ||||||
|  |     }; | ||||||
|  |     return isItemEmpilable ? [achatData] : Array.from({ length: quantite }, (_, i) => achatData); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   async effectuerTacheAlchimie(recetteId, tacheAlchimie, texteTache) { |   async effectuerTacheAlchimie(recetteId, tacheAlchimie, texteTache) { | ||||||
|     let recetteData = this.getItemOfType(recetteId, 'recettealchimique'); |     let recetteData = this.getItemOfType(recetteId, 'recettealchimique'); | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ export class DialogSplitItem extends Dialog { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   constructor(item, splitData, html, callback) { |   constructor(item, splitData, html, callback) { | ||||||
|     let options = { classes: ["dialogsplit"], width: 300, height: 160, 'z-index': 99999 }; |     let options = { classes: ["dialogsplit"], width: 300, height: 'fit-content', 'z-index': 99999 }; | ||||||
|     let conf = { |     let conf = { | ||||||
|       title: "Séparer en deux", |       title: "Séparer en deux", | ||||||
|       content: html, |       content: html, | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ const MONNAIE_OR = { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| const MONNAIES_STANDARD = [MONNAIE_ETAIN, MONNAIE_BRONZE, MONNAIE_ARGENT, MONNAIE_OR]; | const MONNAIES_STANDARD = [MONNAIE_ETAIN, MONNAIE_BRONZE, MONNAIE_ARGENT, MONNAIE_OR]; | ||||||
|  | const VALEUR_DENIERS = sols => Math.max(Math.floor((sols ?? 0) * 100), 0); | ||||||
|  |  | ||||||
| export class Monnaie { | export class Monnaie { | ||||||
|  |  | ||||||
| @@ -40,15 +41,11 @@ export class Monnaie { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   static deValeur(monnaie, valeur) { |   static deValeur(monnaie, valeur) { | ||||||
|     return Monnaie.valEntiere(valeur) == Monnaie.valEntiere(monnaie.system.cout) |     return VALEUR_DENIERS(valeur) == VALEUR_DENIERS(monnaie.system.cout) | ||||||
|   } |  | ||||||
|  |  | ||||||
|   static valEntiere(sols) { |  | ||||||
|     return Math.max(Math.floor((sols??0)*100), 0); |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   static triValeurEntiere() { |   static triValeurEntiere() { | ||||||
|     return Misc.ascending(item => Monnaie.valEntiere(item.system.cout)) |     return Misc.ascending(item => VALEUR_DENIERS(item.system.cout)) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   static async creerMonnaiesStandard(actor) { |   static async creerMonnaiesStandard(actor) { | ||||||
| @@ -65,11 +62,23 @@ export class Monnaie { | |||||||
|     return deniers; |     return deniers; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   static getFortune(actor) { | ||||||
|  |     if (actor) { | ||||||
|  |       Monnaie.validerMonnaies(actor); | ||||||
|  |       return actor.itemTypes['monnaie'] | ||||||
|  |         .map(m => Number(m.system.cout) * Number(m.system.quantite)) | ||||||
|  |         .reduce(Misc.sum(), 0); | ||||||
|  |     } | ||||||
|  |     return 0; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   static async optimiserFortune(actor, fortune) { |   static async optimiserFortune(actor, fortune) { | ||||||
|     let resteEnDeniers = Math.round(fortune*100); |     let resteEnDeniers = Math.round(fortune * 100); | ||||||
|     let monnaies = actor.itemTypes['monnaie']; |     let monnaies = actor.itemTypes['monnaie']; | ||||||
|     let updates = []; |     let updates = []; | ||||||
|     let parValeur = Misc.classifyFirst(monnaies, it => Monnaie.valEntiere(it.system.cout)); |     Monnaie.validerMonnaies(actor); | ||||||
|  |  | ||||||
|  |     let parValeur = Misc.classifyFirst(monnaies, it => VALEUR_DENIERS(it.system.cout)); | ||||||
|     for (let valeurDeniers of [1000, 100, 10, 1]) { |     for (let valeurDeniers of [1000, 100, 10, 1]) { | ||||||
|       const itemPiece = parValeur[valeurDeniers]; |       const itemPiece = parValeur[valeurDeniers]; | ||||||
|       if (itemPiece) { |       if (itemPiece) { | ||||||
| @@ -77,17 +86,25 @@ export class Monnaie { | |||||||
|         if (quantite != itemPiece.system.quantite) { |         if (quantite != itemPiece.system.quantite) { | ||||||
|           updates.push({ _id: parValeur[valeurDeniers].id, 'system.quantite': quantite }); |           updates.push({ _id: parValeur[valeurDeniers].id, 'system.quantite': quantite }); | ||||||
|         } |         } | ||||||
|         resteEnDeniers -= quantite*valeurDeniers; |         resteEnDeniers -= quantite * valeurDeniers; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     console.log('Monnaie.optimiserFortune', actor.name, 'total', fortune, 'parValeur', parValeur, 'updates', updates, 'reste', resteEnDeniers); |     console.log('Monnaie.optimiserFortune', actor.name, 'total', fortune, 'parValeur', parValeur, 'updates', updates, 'reste', resteEnDeniers); | ||||||
|     if (updates.length > 0) { |     if (updates.length > 0) { | ||||||
|       await actor.updateEmbeddedDocuments('Item', updates); |       await actor.updateEmbeddedDocuments('Item', updates); | ||||||
|     } |     } | ||||||
|     if (resteEnDeniers > 0){ |     if (resteEnDeniers > 0) { | ||||||
|       // créer le reste en deniers fortune en deniers |       // créer le reste en deniers fortune en deniers | ||||||
|       await Monnaie.creerMonnaiesDeniers(actor, resteEnDeniers); |       await Monnaie.creerMonnaiesDeniers(actor, resteEnDeniers); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   static validerMonnaies(actor) { | ||||||
|  |     actor.itemTypes['monnaie'].filter(it => VALEUR_DENIERS(it.system.cout) == 0) | ||||||
|  |       .map(it => `La  monnaie ${it.name} de l'acteur ${actor.name} a une valeur de 0!`) | ||||||
|  |       .forEach(message => { | ||||||
|  |         ui.notifications.warn(message); | ||||||
|  |         console.warn(message); | ||||||
|  |       }); | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -159,8 +159,6 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|     super.activateListeners(html); |     super.activateListeners(html); | ||||||
|     this.html = html; |     this.html = html; | ||||||
|  |  | ||||||
|     let itemSheetDialog = this; |  | ||||||
|  |  | ||||||
|     HtmlUtility._showControlWhen(this.html.find(".item-cout"), ReglesOptionelles.isUsing('afficher-prix-joueurs') || game.user.isGM || !this.item.isOwned); |     HtmlUtility._showControlWhen(this.html.find(".item-cout"), ReglesOptionelles.isUsing('afficher-prix-joueurs') || game.user.isGM || !this.item.isOwned); | ||||||
|     HtmlUtility._showControlWhen(this.html.find(".item-magique"), this.item.isMagique()); |     HtmlUtility._showControlWhen(this.html.find(".item-magique"), this.item.isMagique()); | ||||||
|  |  | ||||||
| @@ -178,6 +176,14 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|         RdDUtility.checkThanatosXP(this.item.name); |         RdDUtility.checkThanatosXP(this.item.name); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|  |     this.html.find(".item-cout input[name='system.cout']").change(event => { | ||||||
|  |       if (this.item.isMonnaie()) { | ||||||
|  |         const value = event.currentTarget.value; | ||||||
|  |         if (Number(value) == 0) { | ||||||
|  |           ui.notifications.error(`${this.actor?.name ?? 'Monnaie'}: La monnaie ${this.item.name} a maintenant une valeur de 0, et ne peut plus être utilisée pour payer!`) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |  | ||||||
|     this.html.find('.enchanteDate').change((event) => { |     this.html.find('.enchanteDate').change((event) => { | ||||||
|       let jour = Number(this.html.find('[name="splitDate.day"]').val()); |       let jour = Number(this.html.find('[name="splitDate.day"]').val()); | ||||||
| @@ -201,12 +207,12 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, async () => itemSheetDialog.render(true))); |     this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, async () => this.render(true))); | ||||||
|     this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true)); |     this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true)); | ||||||
|     this.html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor))); |     this.html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor))); | ||||||
|     this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); |     this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); | ||||||
|     this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem()); |     this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem()); | ||||||
|     this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => itemSheetDialog.render(true))); |     this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => this.render(true))); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   _getEventActor(event) { |   _getEventActor(event) { | ||||||
|   | |||||||
| @@ -149,6 +149,9 @@ export class RdDItem extends Item { | |||||||
|   isConteneur() { |   isConteneur() { | ||||||
|     return this.type == 'conteneur'; |     return this.type == 'conteneur'; | ||||||
|   } |   } | ||||||
|  |   isMonnaie() { | ||||||
|  |     return this.type == 'monnaie'; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   getItemGroup() { |   getItemGroup() { | ||||||
|     if (this.isInventaire()) return "equipement"; |     if (this.isInventaire()) return "equipement"; | ||||||
|   | |||||||
| @@ -81,6 +81,7 @@ | |||||||
|   --background-custom-button: linear-gradient(to bottom, rgba(33, 55, 74, 0.988) 5%, rgba(21, 40, 51, 0.671) 100%); |   --background-custom-button: linear-gradient(to bottom, rgba(33, 55, 74, 0.988) 5%, rgba(21, 40, 51, 0.671) 100%); | ||||||
|   --background-custom-button-hover: linear-gradient(to bottom, rgb(128, 0, 0) 5%, rgb(62, 1, 1) 100%); |   --background-custom-button-hover: linear-gradient(to bottom, rgb(128, 0, 0) 5%, rgb(62, 1, 1) 100%); | ||||||
|   --background-tooltip: rgba(220,220,210,0.95); |   --background-tooltip: rgba(220,220,210,0.95); | ||||||
|  |   --background-error:hsla(16, 100%, 50%, 0.8); | ||||||
| } | } | ||||||
|  |  | ||||||
| /*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/ | /*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/ | ||||||
| @@ -364,9 +365,21 @@ table {border: 1px solid #7a7971;} | |||||||
|   justify-content: center; |   justify-content: center; | ||||||
|   text-align: left; |   text-align: left; | ||||||
| } | } | ||||||
|  | .equipement-valeur { | ||||||
|  |   margin: 0; | ||||||
|  |   flex-grow: 1.5; | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
| .equipement-detail { | .equipement-detail { | ||||||
|   margin: 0; |   margin: 0; | ||||||
|   flex: 'flex-shrink' ; |   flex-grow: 1; | ||||||
|  |   align-items: center; | ||||||
|  |   justify-content: center; | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  | .equipement-button { | ||||||
|  |   margin: 0; | ||||||
|  |   flex-grow: 0.5; | ||||||
|   align-items: center; |   align-items: center; | ||||||
|   justify-content: center; |   justify-content: center; | ||||||
|   text-align: center; |   text-align: center; | ||||||
| @@ -879,6 +892,11 @@ ul, li { | |||||||
|   background: rgb(160, 130, 100, 0.05); |   background: rgb(160, 130, 100, 0.05); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | input.attribute-value.field-error , | ||||||
|  | .list-item span.field-error { | ||||||
|  |   background-color: var(--background-error); | ||||||
|  | } | ||||||
|  |  | ||||||
| ul.chat-list { | ul.chat-list { | ||||||
|   margin-left: 0.8rem; |   margin-left: 0.8rem; | ||||||
|   list-style: inside; |   list-style: inside; | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| { | { | ||||||
|   "id": "foundryvtt-reve-de-dragon", |   "id": "foundryvtt-reve-de-dragon", | ||||||
|   "title": "Rêve de Dragon", |   "title": "Rêve de Dragon", | ||||||
|   "version": "10.3.12", |   "version": "10.3.13", | ||||||
|   "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.3.12.zip", |   "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.3.13.zip", | ||||||
|   "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json", |   "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json", | ||||||
|   "compatibility": { |   "compatibility": { | ||||||
|     "minimum": "10", |     "minimum": "10", | ||||||
|   | |||||||
| @@ -4,13 +4,16 @@ | |||||||
|   <li class="item flexrow list-item" data-item-id="{{piece._id}}"> |   <li class="item flexrow list-item" data-item-id="{{piece._id}}"> | ||||||
|     <img class="sheet-competence-img" src="{{piece.img}}" title="{{piece.name}}"/> |     <img class="sheet-competence-img" src="{{piece.img}}" title="{{piece.name}}"/> | ||||||
|     <span class="equipement-nom">{{piece.name}}</span> |     <span class="equipement-nom">{{piece.name}}</span> | ||||||
|     <span class="equipement-detail item-controls"> |     <span class="equipement-valeur {{#unless (gt piece.system.cout 0)}}field-error{{/unless}}"> | ||||||
|  |       ({{piece.system.cout}} Sols) | ||||||
|  |     </span> | ||||||
|  |     <span class="equipement-button item-controls"> | ||||||
|       <a class="monnaie-moins"><i class="fas fa-minus-square"></i></a> |       <a class="monnaie-moins"><i class="fas fa-minus-square"></i></a> | ||||||
|     </span> |     </span> | ||||||
|     <span class="equipement-detail"> |     <span class="equipement-detail"> | ||||||
|       <span>{{piece.system.quantite}}</span> |       <span>{{piece.system.quantite}}</span> | ||||||
|     </span> |     </span> | ||||||
|     <span class="equipement-detail item-controls"> |     <span class="equipement-button item-controls"> | ||||||
|       <a class="monnaie-plus"><i class="fas fa-plus-square"></i></a> |       <a class="monnaie-plus"><i class="fas fa-plus-square"></i></a> | ||||||
|     </span> |     </span> | ||||||
|     <span class="equipement-actions  item-controls"> |     <span class="equipement-actions  item-controls"> | ||||||
|   | |||||||
| @@ -14,7 +14,12 @@ | |||||||
|   {{#unless (isFieldInventaireModifiable type 'quantite')}}disabled{{/unless}}/> |   {{#unless (isFieldInventaireModifiable type 'quantite')}}disabled{{/unless}}/> | ||||||
| </div> | </div> | ||||||
| <div class="form-group item-cout"> | <div class="form-group item-cout"> | ||||||
|   <label for="system.cout">Prix (sols) </label> |   <label for="system.cout">Prix (sols)</label> | ||||||
|  |   {{#if (or (ne type 'monnaie') (gt system.cout 0))}} | ||||||
|   <input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number" |   <input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number" | ||||||
|     {{#unless (isFieldInventaireModifiable type 'cout')}}disabled{{/unless}}/> |     {{#unless (isFieldInventaireModifiable type 'cout')}}disabled{{/unless}}/> | ||||||
|  |   {{else}} | ||||||
|  |     <input class="attribute-value field-error" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number" | ||||||
|  |     {{#unless (isFieldInventaireModifiable type 'cout')}}disabled{{/unless}}/> | ||||||
|  |   {{/if}} | ||||||
| </div> | </div> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user