From 07b68020b2929dbdc25784eb5ba3b9828ace1362 Mon Sep 17 00:00:00 2001 From: sladecraven Date: Sun, 11 Apr 2021 12:07:43 +0200 Subject: [PATCH] #181 Gestion potions (fabrication) --- module/dialog-fabriquer-potion.js | 64 +++++++++++++++++++ packs/botanique.db | 2 +- .../chat-consommer-potion-generique.html | 9 +++ templates/chat-fabriquer-potion-base.html | 12 ++++ templates/dialog-fabriquer-potion-base.html | 17 +++++ templates/enum-categorie-potion.html | 10 +++ 6 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 module/dialog-fabriquer-potion.js create mode 100644 templates/chat-consommer-potion-generique.html create mode 100644 templates/chat-fabriquer-potion-base.html create mode 100644 templates/dialog-fabriquer-potion-base.html create mode 100644 templates/enum-categorie-potion.html diff --git a/module/dialog-fabriquer-potion.js b/module/dialog-fabriquer-potion.js new file mode 100644 index 00000000..c6b2096b --- /dev/null +++ b/module/dialog-fabriquer-potion.js @@ -0,0 +1,64 @@ +import { Grammar } from "./grammar.js"; +import { Misc } from "./misc.js"; +import { RdDUtility } from "./rdd-utility.js"; + +export class DialogFabriquerPotion extends Dialog { + + /* -------------------------------------------- */ + static async create(actor, item, dialogConfig) { + let potionData = DialogFabriquerPotion.prepareData(actor, item); + + let conf = { + title: `Fabriquer une potion de ${potionData.data.categorie}`, + content: await renderTemplate(dialogConfig.html, potionData), + default: potionData.buttonName, + }; + + let options = { classes: ["dialogfabriquerpotion"], width: 600, height: 160, 'z-index': 99999 }; + mergeObject(options, dialogConfig.options ?? {}, { overwrite: true }) + + const dialog = new DialogFabriquerPotion(actor, potionData, conf, options); + dialog.render(true); + return dialog; + } + + /* -------------------------------------------- */ + static prepareData(actor, item) { + let potionData = duplicate(Misc.data(item)); + potionData.nbBrinsSelect = RdDUtility.buildListOptions( 1, potionData.data.quantite); + potionData.nbBrins = potionData.data.quantite; + potionData.buttonName = "Fabriquer"; + return potionData; + } + + /* -------------------------------------------- */ + constructor(actor, potionData, conf, options) { + conf.buttons = { + [potionData.buttonName]: { + label: potionData.buttonName, callback: it => { + this.fabriquer(); + } + } + }; + + super(conf, options); + + this.actor = actor; + this.potionData = potionData; + } + + /* -------------------------------------------- */ + activateListeners(html) { + super.activateListeners(html); + + html.find("#nbBrins").change(event => { + this.potionData.nbBrins = Misc.toInt(event.currentTarget.value); + }); + } + + /* -------------------------------------------- */ + async fabriquer() { + this.actor.fabriquerPotion( this.potionData ); + this.close(); + } +} \ No newline at end of file diff --git a/packs/botanique.db b/packs/botanique.db index 99a45e7e..a7151898 100644 --- a/packs/botanique.db +++ b/packs/botanique.db @@ -24,6 +24,7 @@ {"name":"Primelune","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Apparaissant le plus souvent à la nouvelle lune, c’est un petit champignon à pied blanc et chapeau plat vert tendre.

\n

Commune.

","niveau":1,"encombrement":0.1,"base":0,"quantite":1,"milieu":"Lieux sombres et humides","rarete":"Commune","categorie":"Cuisine","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Primelune.png","effects":[],"_id":"Kg13pgjU0u421Kcm"} {"name":"Fumebol","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Champignon brun ressemblant grossièrement au cèpe bolet.

\n

M5 \\ P 8 rounds \\ D2 \\ -5 \\ Sable-Poudre +12, Huile de Sélikanthe +8.

\n

Rare.

","niveau":0,"encombrement":0,"base":0,"quantite":1,"milieu":"Lieux sombres et humides","rarete":"Rare","categorie":"","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Fumebol.png","effects":[],"_id":"LJdoBQBE3KNDLXKq"} {"name":"Gironcle","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Sorte de girolle à pied violet et corolle brun doré.

\n

Rare.

","niveau":4,"encombrement":0.1,"base":0,"quantite":1,"milieu":"Lieux sombres et humides","rarete":"Rare","categorie":"Cuisine","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Gironcle.png","effects":[],"_id":"NhJm0FRVOi8L3xqv"} +{"name":"Amandelle","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amandelle.png","data":{"description":"

Fruit de l’amandelier, un petit arbuste à feuilles très découpées de couleur mauve pâle à violet foncé. L’amandelle est une noix plate et allongée au goût d’amande allié au parfum de violette.

\n

Fréquente.

","niveau":0,"encombrement":0.01,"base":0,"quantite":1,"milieu":"Tous","rarete":"Frequente","categorie":"Cuisine","cout":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jtRmvSuwkwMmIMf0":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.botanique.w7jEFHGFrcrKAesQ"}},"_id":"QN2KLZLNL1JUh2bF"} {"name":"Ortironce","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"herbe","data":{"description":"

Ronce venimeuse infestant de nombreux fourrés.

\n

M4 \\ P 1 minute \\ D2 \\ -3 \\ Bitume de Camphre +12, Teinture d’Érozonne +8.

\n

Commune.

","niveau":0,"base":0,"quantite":1,"milieu":"Forêts","rarete":"Commune","categorie":"","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Ortironce.png","effects":[],"_id":"RpUC6z3xhwnmv3sp"} {"name":"Crétamère","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Petite fraise des bois en forme de crête dentelée. Son goût est très amer et devrait suffire à dissuader les gourmands.

\n

M3 \\ P 3 minutes \\ D2 \\ -3 \\ Lait de lune +12, Gelée royale +8.

\n

Fréquente.

","niveau":null,"encombrement":0.02,"base":0,"quantite":1,"milieu":"Tous","rarete":"Frequente","categorie":"","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Cr%C3%A9tam%C3%A8re.png","effects":[],"_id":"Tfl4cElQxPQEXnPY"} {"name":"Mignote","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Cône du mignotier, arbre voisin du mélèze, poussant en contreforts montagneux. Les mignotes doivent être grillées puis moulues. La farine obtenue a un goût chocolaté qui accompagne agréablement le lait chaud du petit déjeuner.

\n

Fréquente.

","niveau":0,"encombrement":0.05,"base":0,"quantite":1,"milieu":"Contreforts montagneux","rarete":"Frequente","categorie":"Cuisine","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Mignote.png","effects":[],"_id":"UfzdMXpTcSgIpAEp"} @@ -58,4 +59,3 @@ {"name":"Amandelle","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Fruit de l’amandelier, un petit arbuste à feuilles très découpées de couleur mauve pâle à violet foncé. L’amandelle est une noix plate et allongée au goût d’amande allié au parfum de violette.

\n

Fréquente.

","niveau":0,"encombrement":0.01,"base":0,"quantite":1,"milieu":"Tous","rarete":"Frequente","categorie":"Cuisine","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amandelle.png","effects":[],"_id":"w7jEFHGFrcrKAesQ"} {"name":"Blèmissure","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"

Champignon affectant la forme d’une éponge, de couleur gris blême, apparaissant sur les troncs des arbres.

\n

M4 \\ P 1 minute \\ D2 \\ -4 \\ Élixir des Gnomes +14, Huile de Sélikanthe +10.

\n

Fréquente.

","niveau":0,"encombrement":0,"base":0,"quantite":1,"milieu":"Forêts sombres et humides","rarete":"Frequente","categorie":"","cout":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Bl%C3%A8missure.png","effects":[],"_id":"wNBWvJSd9i1zHspR"} {"name":"Herbe de lune","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"herbe","data":{"description":"

Petite herbacée aux feuilles en forme de polygone à 7 côtés, d’un bleu très pâle, presque translucide, ne poussant qu’en haute montagne, à partir de 2000 mètres, et uniquement dans les recoins pouvant être éclairés par la lune.

L’herbe de lune possède un fort pouvoir onirique sur celui qui la consomme\"; en termes de jeu, elle permet de gagner des points de rêve. Elle doit être cueillie de nuit et lorsque la lune l’éclaire, faute de quoi son pouvoir est nul. Sa force dépend de la phase lunaire durant laquelle elle est cueillie.

Une fois séchée, l’herbe de lune peut être fumée dans une pipe ou préparée en décoction. Dans les deux cas, une dose doit être composée de 7 brins. Dès la dose absorbée (bue ou fumée), le consommateur doit jouer un JR r-force, c’est-à-dire un jet de points de rêve ajusté négativement à la force de l’herbe. Si le JR réussit, aucun effet ne se produit\"; s’il échoue, le consommateur gagne immédiatement un nombre de points de rêve égal à la force de l’herbe, puis en échange, marque un nombre identique de points de fatigue. On peut ainsi gagner des points de rêve même si le seuil de rêve est dépassé, mais se souvenir que dépasser le triple de son seuil provoque l’éclatement.

L’herbe de lune est parfois trouvable chez les herboristes, mais n’est pas bon marché. Une dose (7 brins) vaut usuellement un nombre de sols égal à sa force. Une dose de force 6 vaut ainsi 6 sols.
Rare.

","niveau":null,"base":0,"quantite":1,"milieu":"Hautes montagnes","rarete":"Rare","categorie":"","cout":null},"flags":{"core":{"sheetClass":"foundryvtt-reve-de-dragon.RdDItemSheet"}},"img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Herbe%20de%20lune.png","effects":[],"_id":"x4wGXTdmrzaOn8Sh"} -{"name":"Amandelle","type":"ingredient","img":"systems/foundryvtt-reve-de-dragon/icons/botanique/Amandelle.png","data":{"description":"

Fruit de l’amandelier, un petit arbuste à feuilles très découpées de couleur mauve pâle à violet foncé. L’amandelle est une noix plate et allongée au goût d’amande allié au parfum de violette.

\n

Fréquente.

","niveau":0,"encombrement":0.01,"base":0,"quantite":1,"milieu":"Tous","rarete":"Frequente","categorie":"Cuisine","cout":0},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jtRmvSuwkwMmIMf0":3},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.botanique.w7jEFHGFrcrKAesQ"}},"_id":"QN2KLZLNL1JUh2bF"} diff --git a/templates/chat-consommer-potion-generique.html b/templates/chat-consommer-potion-generique.html new file mode 100644 index 00000000..23c1946b --- /dev/null +++ b/templates/chat-consommer-potion-generique.html @@ -0,0 +1,9 @@ +potion de repos +

+ {{alias}} consomme sa Potion {{enchanteTexte}} de {{name}}. +

+
+
+ Les effets de la potions sont à gérer manuellement, en fonction de sa nature{{#if isEnchante}} et de son enchantement ({{data.pr}} Points de Rêve){{/if}}. +
La potion a été supprimée de l'équipement. +
diff --git a/templates/chat-fabriquer-potion-base.html b/templates/chat-fabriquer-potion-base.html new file mode 100644 index 00000000..26efd7c8 --- /dev/null +++ b/templates/chat-fabriquer-potion-base.html @@ -0,0 +1,12 @@ +fabrication +

+ {{alias}} a fabriqué une potion de {{categorie}} de {{herbe}}, avec {{nbBrinsPotion}} brins. +

+
+
+ {{#if (eq nbBrinsReste 0)}} + Toute l'herbe a été consommée par la potion. L'herbe a été supprimée de l'inventaire. + {{else}} + La quantité d'herbe est désormais de {{nbBrinsReste}} et a été mise à jour automatiquement. + {{/if}} +
diff --git a/templates/dialog-fabriquer-potion-base.html b/templates/dialog-fabriquer-potion-base.html new file mode 100644 index 00000000..af4dbc4e --- /dev/null +++ b/templates/dialog-fabriquer-potion-base.html @@ -0,0 +1,17 @@ +
+
+ +
+ +
+ + +
+ +
+ + \ No newline at end of file diff --git a/templates/enum-categorie-potion.html b/templates/enum-categorie-potion.html new file mode 100644 index 00000000..a70476e9 --- /dev/null +++ b/templates/enum-categorie-potion.html @@ -0,0 +1,10 @@ + + + + + + + + + +