La cible est ${nonIncarnee ? 'non incarnée' : 'une blurette'}.
+ // Il est impossible de l'atteindre.`,
+ // whisper: ChatMessage.getWhisperRecipients("GM")})
+ // }
+
if (!await this.accorderEntite('avant-attaque')) {
return;
}
@@ -729,7 +777,7 @@ export class RdDCombat {
if (arme) {
this.attacker.verifierForceMin(arme);
}
- this.verifierDistance(rollData)
+ await this.proposerAjustementTirLancer(rollData)
const dialog = await RdDRoll.create(this.attacker, rollData,
{
diff --git a/module/rdd-compendium-organiser.js b/module/rdd-compendium-organiser.js
index 56f9a08a..23cac6c7 100644
--- a/module/rdd-compendium-organiser.js
+++ b/module/rdd-compendium-organiser.js
@@ -1,5 +1,4 @@
import { SYSTEM_RDD } from "./constants.js";
-import { Misc } from "./misc.js";
export class RddCompendiumOrganiser {
static init() {
@@ -17,7 +16,7 @@ export class RddCompendiumOrganiser {
}
static async setEntityTypeName(pack, element) {
- const label = Misc.getEntityTypeLabel(await pack.getDocument(element.dataset.documentId));
+ const label = RddCompendiumOrganiser.getEntityTypeLabel(await pack.getDocument(element.dataset.documentId));
RddCompendiumOrganiser.insertEntityType(element, label);
}
@@ -27,4 +26,16 @@ export class RddCompendiumOrganiser {
}
}
+
+ static getEntityTypeLabel(entity) {
+ const documentName = entity?.documentName
+ const type = entity?.type
+ if (documentName === 'Actor' || documentName === 'Item') {
+ const label = CONFIG[documentName]?.typeLabels?.[type] ?? type;
+ return game.i18n.has(label) ? game.i18n.localize(label) : t;
+ }
+ return type;
+ }
+
+
}
\ No newline at end of file
diff --git a/module/rdd-main.js b/module/rdd-main.js
index cfb87b59..d7466074 100644
--- a/module/rdd-main.js
+++ b/module/rdd-main.js
@@ -150,11 +150,14 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */
game.socket.on(SYSTEM_SOCKET_ID, sockmsg => {
console.log(">>>>> MSG RECV", sockmsg);
-
- RdDUtility.onSocketMessage(sockmsg);
- RdDCombat.onSocketMessage(sockmsg);
- ChatUtility.onSocketMessage(sockmsg);
- RdDActor.onSocketMessage(sockmsg);
+ try {
+ RdDUtility.onSocketMessage(sockmsg);
+ RdDCombat.onSocketMessage(sockmsg);
+ ChatUtility.onSocketMessage(sockmsg);
+ RdDActor.onSocketMessage(sockmsg);
+ } catch(e) {
+ console.error('game.socket.on(SYSTEM_SOCKET_ID) Exception: ', sockmsg,' => ', e)
+ }
});
/* -------------------------------------------- */
diff --git a/module/rdd-utility.js b/module/rdd-utility.js
index 1d3632dc..80be7814 100644
--- a/module/rdd-utility.js
+++ b/module/rdd-utility.js
@@ -112,7 +112,6 @@ export class RdDUtility {
static async preloadHandlebarsTemplates() {
const templatePaths = [
//Character Sheets
- 'systems/foundryvtt-reve-de-dragon/templates/actor-creation-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/actor-creature-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/actor-entite-sheet.html',
@@ -242,6 +241,7 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-description.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html',
+ 'systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-defense.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html',
'systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-etotal.html',
@@ -750,7 +750,12 @@ export class RdDUtility {
});
// gestion bouton tchat Acheter
- html.on("click", '.button-acheter', event => DialogItemAchat.onButtonAcheter(event));
+ html.on("click", '.button-acheter', event => {
+ const venteData = DialogItemAchat.venteData(event.currentTarget);
+ if (venteData) {
+ DialogItemAchat.onAcheter(venteData);
+ }
+ });
html.on("click", '.button-creer-acteur', event => RdDNameGen.onCreerActeur(event));
// Gestion du bouton payer
@@ -888,11 +893,6 @@ export class RdDUtility {
/* -------------------------------------------- */
static async confirmerSuppressionItem(sheet, item, htmlToDelete) {
const itemId = item.id;
- if (Monnaie.isSystemMonnaie(item, sheet.actor.items)) {
- ui.notifications.warn("Suppression des monnaies de base impossible");
- return;
- }
-
const confirmationSuppression = {
settingConfirmer: "confirmation-supprimer-" + item.getItemGroup(),
content: `Etes vous certain de vouloir supprimer: ${item.name}?
`,
diff --git a/templates/chat-info-distance.html b/templates/chat-info-distance.html
new file mode 100644
index 00000000..8cc89e5b
--- /dev/null
+++ b/templates/chat-info-distance.html
@@ -0,0 +1,9 @@
+
+Ajustement de tir/lancer proposé de {{total}}
+
+ {{defender.name}} est à une distance indicative de {{distance}} mètres.
+ {{log defender}}
+ Portée {{portee.msg}} pour l'arme {{rollData.arme.name}} : {{portee.diff}}
+ De taille {{taille.msg}}: {{taille.diff}}
+ Mouvement {{activite.msg}}: {{activite.diff}}
+
diff --git a/templates/dialog-item-achat.html b/templates/dialog-item-achat.html
index 3363a358..c54eaf55 100644
--- a/templates/dialog-item-achat.html
+++ b/templates/dialog-item-achat.html
@@ -45,38 +45,38 @@
- {{#if (eq item.type 'nourritureboisson')}}
-
- Si vous souhaitez {{#if item.system.boisson}}boire{{else}}manger{{/if}}:
-
+ {{#if (and (eq item.type 'nourritureboisson') (eq acheteur.type 'personnage'))}}
+ Si vous souhaitez {{#if item.system.boisson}}boire{{else}}manger{{/if}}:
- {{#if item.system.sust}}
- Cette {{#if item.system.boisson}}boisson{{else}}nourriture{{/if}} vous apportera {{totalSust}} de sustantation.
- {{/if}}
- {{#if item.system.boisson}}
- {{#if item.system.alcoolise}}
- C'est une boisson alcoolisée de force {{item.system.force}}, vous effectuerez un jet d'éthylisme.
- {{/if}}
- Cette boisson vous apportera {{totalDesaltere}} unités d'eau.
-
- {{/if}}
- {{#if (gt item.system.qualite 0)}}
- {{#if (gt item.system.qualite cuisine.system.niveau)}}
- La qualité du plat est telle qu'un jet de Goût/Cuisine à {{numberFormat item.system.qualite decimals=0 sign=true}}
- vous permettra un jet de moral heureux.
- {{/if}}
- {{/if}}
-
- {{#if (or (lt item.system.qualite 0) (lt item.system.exotisme 0))}}
-
- Pour surmonter {{#if (lt item.system.qualite 0)}}le mauvais goût{{else}}l'exotisme{{/if}}, vous devez effectuer un jet de Volonté/Cuisine à {{numberFormat (min item.system.exotisme item.system.qualite) decimals=0 sign=true}}.
-
-
- En cas d'échec, voulez-vous vous forcer à manger (et subir un jet de moral en situation malheureuse)?
-
-
- {{/if}}
+ {{#if item.system.sust}}
+ Cette {{#if item.system.boisson}}boisson{{else}}nourriture{{/if}} vous apportera
+ {{totalSust}}
+ de sustantation.
+ {{/if}}
+ {{#if item.system.boisson}}
+
+ {{#if item.system.alcoolise}}
+ C'est une boisson alcoolisée de force {{item.system.force}}, vous effectuerez un jet d'éthylisme.
+ {{/if}}
+ Cette boisson vous apportera {{totalDesaltere}} unités d'eau.
+
+ {{/if}}
+ {{#if (gt item.system.qualite 0)}}
+ {{#if (gt item.system.qualite cuisine.system.niveau)}}
+ La qualité du plat est telle qu'un jet de Goût/Cuisine à {{numberFormat item.system.qualite decimals=0 sign=true}}
+ vous permettra un jet de moral heureux.
+ {{/if}}
+ {{/if}}
+
+ {{#if (or (lt item.system.qualite 0) (lt item.system.exotisme 0))}}
+
+ Pour surmonter {{#if (lt item.system.qualite 0)}}le mauvais goût{{else}}l'exotisme{{/if}}, vous devez effectuer un jet de Volonté/Cuisine à {{numberFormat (min item.system.exotisme item.system.qualite) decimals=0 sign=true}}.
+
+
+ En cas d'échec, voulez-vous vous forcer à manger (et subir un jet de moral en situation malheureuse)?
+
+
+ {{/if}}
{{/if}}
{{#if isVente}}