#181 Gestion potions (fabrication)
This commit is contained in:
parent
1cea9753a9
commit
1b3c5f524d
@ -29,7 +29,7 @@ import { RdDCarac } from "./rdd-carac.js";
|
||||
import { Monnaie } from "./item-monnaie.js";
|
||||
import { RdDHerbes } from "./rdd-herbes.js";
|
||||
import { DialogConsommer } from "./dialog-consommer.js";
|
||||
import { RdDItem } from "./item.js";
|
||||
import { DialogFabriquerPotion } from "./dialog-fabriquer-potion.js";
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -3308,6 +3308,47 @@ export class RdDActor extends Actor {
|
||||
this.bonusRepos = potionData.data.herbeBonus;
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
dialogFabriquerPotion( herbe ) {
|
||||
DialogFabriquerPotion.create(this, herbe, {
|
||||
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-fabriquer-potion-base.html',
|
||||
}, []);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async fabriquerPotion( potionData ) {
|
||||
let newPotion = {
|
||||
name: `Potion de ${potionData.data.categorie} (${potionData.name})`, type: 'potion',
|
||||
img: "systems/foundryvtt-reve-de-dragon/icons/objets/fiole_verre.webp",
|
||||
data: { quantite: 1, valeur_deniers: 1, encombrement: 0.01,
|
||||
categorie: potionData.data.categorie,
|
||||
herbe: potionData.name,
|
||||
rarete: potionData.data.rarete,
|
||||
herbebrins: potionData.nbBrins,
|
||||
description: "" }
|
||||
}
|
||||
await this.createEmbeddedDocuments('Item', [newPotion], { renderSheet: true });
|
||||
|
||||
let newQuantite = potionData.data.quantite - potionData.nbBrins;
|
||||
let messageData = {
|
||||
alias: this.name,
|
||||
categorie: potionData.data.categorie,
|
||||
herbe: potionData.name,
|
||||
nbBrinsPotion: potionData.nbBrins,
|
||||
nbBrinsReste: newQuantite
|
||||
}
|
||||
if (newQuantite == 0 ) {
|
||||
await this.deleteEmbeddedDocuments('Item', [ potionData._id ] );
|
||||
} else {
|
||||
let update = { _id: potionData._id, 'data.quantite': newQuantite};
|
||||
const updated = await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html`, messageData )
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async consommerPotionGenerique( potionData ) {
|
||||
|
@ -63,6 +63,7 @@ export class DialogConsommer extends Dialog {
|
||||
this.consommerData = consommerData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
|
@ -65,6 +65,11 @@ export class RdDItemSheet extends ItemSheet {
|
||||
isSoins: false,
|
||||
isEnchante: false
|
||||
}
|
||||
if ( this.actor ) {
|
||||
formData.isOwned = true;
|
||||
formData.actorId = this.actor.id;
|
||||
}
|
||||
|
||||
formData.categorieCompetences = RdDItemCompetence.getCategorieCompetences();
|
||||
if ( formData.type == 'tache' || formData.type == 'livre' || formData.type == 'meditation' || formData.type == 'oeuvre') {
|
||||
formData.caracList = duplicate(game.system.model.Actor.personnage.carac);
|
||||
@ -84,10 +89,8 @@ export class RdDItemSheet extends ItemSheet {
|
||||
}
|
||||
RdDHerbes.updatePotionData(formData);
|
||||
}
|
||||
|
||||
if ( this.actor ) {
|
||||
formData.isOwned = true;
|
||||
formData.actorId = this.actor.id;
|
||||
if ( formData.isOwned && formData.type == 'herbe' && (formData.data.categorie == 'Soin' || formData.data.categorie == 'Repos') ) {
|
||||
formData.isIngredientPotionBase = true;
|
||||
}
|
||||
formData.bonusCaseList = RdDItemSort.getBonusCaseList(formData, true);
|
||||
|
||||
@ -128,6 +131,11 @@ export class RdDItemSheet extends ItemSheet {
|
||||
let actor = game.actors.get( actorId );
|
||||
actor.consommerPotion( this.item );
|
||||
});
|
||||
html.find('.creer-potion-base').click((event) => {
|
||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
||||
let actor = game.actors.get( actorId );
|
||||
actor.dialogFabriquerPotion( this.item );
|
||||
});
|
||||
|
||||
html.find('.alchimie-tache a').click((event) => {
|
||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
||||
|
@ -139,6 +139,7 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-categorie-vehicule.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-competence.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-herbesoin-ingredient.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-categorie-potion.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-initpremierround.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/enum-rarete.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/sort-draconic.html',
|
||||
@ -188,7 +189,8 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-turn-summary.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html'
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html'
|
||||
];
|
||||
|
||||
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
||||
@ -201,6 +203,14 @@ export class RdDUtility {
|
||||
return loadTemplates(templatePaths);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static buildListOptions( min, max ) {
|
||||
let options = ""
|
||||
for(let i=min; i<= max; i++) {
|
||||
options += `<option value="${i}">${i}</option>`
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static checkNull(items) {
|
||||
@ -533,9 +543,6 @@ export class RdDUtility {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async chatListeners(html) {
|
||||
RdDCombat.registerChatCallbacks(html);
|
||||
|
@ -58,3 +58,4 @@
|
||||
{"name":"Amandelle","permission":{"default":0,"rYShh2P1DNavdoBD":3},"type":"ingredient","data":{"description":"<p>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.</p>\n<p>Fréquente.</p>","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":"<p>Champignon affectant la forme d’une éponge, de couleur gris blême, apparaissant sur les troncs des arbres.</p>\n<p>M4 \\ P 1 minute \\ D2 \\ -4 \\ Élixir des Gnomes +14, Huile de Sélikanthe +10.</p>\n<p>Fréquente.</p>","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":"<p>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. <br /><br />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. <br /><br />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. <br /><br />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. <br />Rare.</p>","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":"<p>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.</p>\n<p>Fréquente.</p>","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"}
|
||||
|
@ -1,10 +1,6 @@
|
||||
<option value=""></option>
|
||||
<option value="Alchimie">Potion d'Alchimie</option>
|
||||
<option value="AlchimieEnchante">Potion d'Alchimie Enchantée</option>
|
||||
<option value="Cuisine">Potion de Cuisine</option>
|
||||
<option value="Repos">Potion de Repos</option>
|
||||
<option value="ReposEnchante">Potion de Repos Enchantée</option>
|
||||
<option value="Soin">Potion de Soin</option>
|
||||
<option value="SoinEnchante">Potion de Soin Enchantée</option>
|
||||
<option value="Autre">Potion Autre</option>
|
||||
<option value="AutreEnchante">Potion Autre Enchantée</option>
|
||||
<option value="Alchimie">Alchimie</option>
|
||||
<option value="Cuisine">Cuisine</option>
|
||||
<option value="Repos">Repos</option>
|
||||
<option value="Soin">Soin</option>
|
||||
<option value="Autre">Autre</option>
|
||||
|
@ -3,6 +3,11 @@
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
{{#if isIngredientPotionBase}}
|
||||
<div class="form-group">
|
||||
<span for="xp"><a class="creer-potion-base chat-card-button" data-actor-id="{{actorId}}">Fabriquer une potion depuis cette plante</a></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
<input class="attribute-value" type="text" name="data.niveau" value="{{data.niveau}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Quantité (Pépins)</label>
|
||||
<label>Quantité (Pépins ou Brins)</label>
|
||||
<input class="attribute-value" type="text" name="data.quantite" value="{{data.quantite}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
@ -5,7 +5,7 @@
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
{{#if isOwned}}
|
||||
<div class="form-group">
|
||||
<span for="xp"><a class="consommer-potion chat-card-button" data-actor-id="{{actorId}}">Consommer cette potion et appliquer ses effets</a></span>
|
||||
<span for="xp"><a class="fabriquer-potion chat-card-button" data-actor-id="{{actorId}}">Consommer cette potion et appliquer ses effets</a></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@ -37,7 +37,7 @@
|
||||
<label>Catégorie</label>
|
||||
<select name="data.categorie" class="categoriepotion" data-dtype="String">
|
||||
{{#select data.categorie}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-ingredient.html"}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-potion.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user