Compare commits

..

19 Commits

Author SHA1 Message Date
7f7148e658 Preparation du passage en v12 2024-05-02 14:08:02 +02:00
bc35c8d80e Preparation du passage en v12 2024-05-01 09:13:21 +02:00
ad9e75c66d Merge pull request '11.2.19 - Les hémorroïdes d'Akarlikarlikar' (#697) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: public/foundryvtt-reve-de-dragon#697
2024-05-01 08:59:34 +02:00
e946299810 Version 11.2.19 2024-05-01 01:12:28 +02:00
fad894704d Fix: encaisser dommages par MJ
Lorsque l'option d'encaisser les dommages était contrôlée
par le MJ, les données envoyées par les joueurs ne correspondaient
pas aux paramètres de la méthode à exécuter par le MJ.

De plus, l'envoi de l'attacker (Actor) était reçu comme un Object,
donc inutilisable en tant qu'Actor.
2024-05-01 01:08:50 +02:00
3365852210 Merge pull request '11.2.18' (#696) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: public/foundryvtt-reve-de-dragon#696
2024-03-21 15:51:07 +01:00
d71bf27311 Version 11.2.18 - Le bourrichon d'Akarlikarlikar 2024-03-20 21:57:02 +01:00
e6da18bebd Ajout du bouton Montrer
Ajout du bouton Montrer dans les différentes listes
2024-03-20 21:55:18 +01:00
972ae74e2c Merge pull request '11.2.17 - Le cache-oeil d'Akarlikarlikar' (#695) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: public/foundryvtt-reve-de-dragon#695
2024-03-10 08:57:28 +01:00
7969e74c8d Version 11.2.17 2024-03-10 00:53:45 +01:00
84ea3a6ea9 Fix: TMR qui ne s'affichent pas
Après un certain temps (changements de scènes?), les TMR ne
s'affichaient plus correctement.

Tentative de forcer le chargement des textures manquantes lors
de l'ouverture de la fenêtre de TMR.
2024-03-10 00:47:50 +01:00
7ada5577aa Ajout de l'information Ombre de Thanatos
Si Thanatos a été utilisé, la prochaine queue est une ombre
Un indicateur apparait dans l'onglet Haut-Rêve.
2024-03-10 00:24:02 +01:00
b0e28ef937 Fix: labels for / id
- Ajout de "for" sur labels
- suppression d'id inutiles
- corrections de for="xp" incorrects
- simplification css alchimie-title/blessure-title
2024-03-10 00:13:36 +01:00
6414f76d67 Fix: ignorer personnages joueurs non liés
Pour les fenêtres de stress/repos/voyage/astrologie, ignorer
les personnages non liés (par exemple, un guerrier sorde)
2024-03-09 23:12:13 +01:00
dde3011f1d Fix: Checkbox cacher les points de tâche 2024-03-09 19:50:00 +01:00
6dbf322efe Fix: traduction tooltip Ediot/Delete 2024-03-09 19:49:31 +01:00
d34fde2ba4 Fix: titre des feuilles d'objets
Suite à la correction de l'ordre et du nom dans la fenêtre de création,
les titres étaient incorrects (TYPES.Item.Tache par exemple)
2024-03-09 19:48:53 +01:00
bc169d931b Fix: log erreur TMR en mode visu
En mode visualisation, les informations du personnage ne sont
pas affichées
2024-03-09 19:38:53 +01:00
3b269b2baa Simplifications 2024-03-09 19:13:13 +01:00
105 changed files with 407 additions and 358 deletions

View File

@@ -1,6 +1,19 @@
# 11.2 # 11.2
## 11.2.19 - Les hémorroïdes d'Akarlikarlikar
- La validation des jets d'encaissement par le Gardien fonctionne de nouveau
## 11.2.16 - La Tri d'Akarlikarlikar ## 11.2.18 - Le bourrichon d'Akarlikarlikar
- Les différentes listes de la feuille de personnage ont maintenant le bouton pour envoyer dans le tchat
## 11.2.17 - Le cache-oeil d'Akarlikarlikar
- Le titre des fenêtre d'objet affiche de nouveau le type traduit
- Les tooltips des boutons edit/delete sont maintenant en Français
- La case à cocher "Cacher les points de tâches" fonctionne de nouveau
- Les personnages non-liés ne sont plus dans les liste de personnages joueurs pour le repos, le stress, la fatigue
- L'utilisation de Thanatos est visible dans l'onglet Haut-Rêve pour indiquer que la prochaine queue est une ombre
- La fenêtre des TMRs ne devrait plus afficher une zone noire au lieu de la carte.
## 11.2.16 - Le Tri d'Akarlikarlikar
- Tri alphabétique des items dans la fenêtre de création - Tri alphabétique des items dans la fenêtre de création
- Mise à jour comptage de monde - Mise à jour comptage de monde

View File

@@ -28,7 +28,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(RdDBaseActorReveSheet.defaultOptions, { return foundry.utils.mergeObject(RdDBaseActorReveSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-sheet.html", template: "systems/foundryvtt-reve-de-dragon/templates/actor-sheet.html",
width: 550, width: 550,
showCompNiveauBase: false, showCompNiveauBase: false,
@@ -39,7 +39,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
async getData() { async getData() {
let formData = await super.getData(); let formData = await super.getData();
mergeObject(formData, foundry.utils.mergeObject(formData,
{ {
editable: this.isEditable, editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",
@@ -49,7 +49,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
biographie: await TextEditor.enrichHTML(this.actor.system.biographie, { async: true }), biographie: await TextEditor.enrichHTML(this.actor.system.biographie, { async: true }),
notes: await TextEditor.enrichHTML(this.actor.system.notes, { async: true }), notes: await TextEditor.enrichHTML(this.actor.system.notes, { async: true }),
}); });
mergeObject(formData.calc, { foundry.utils.mergeObject(formData.calc, {
surenc: this.actor.computeMalusSurEncombrement(), surenc: this.actor.computeMalusSurEncombrement(),
surprise: RdDBonus.find(this.actor.getSurprise(false)).descr, surprise: RdDBonus.find(this.actor.getSurprise(false)).descr,
resumeBlessures: this.actor.computeResumeBlessure(this.actor.system.blessures), resumeBlessures: this.actor.computeResumeBlessure(this.actor.system.blessures),
@@ -80,7 +80,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// toujours avoir une liste d'armes (pour mettre esquive et corps à corps) // toujours avoir une liste d'armes (pour mettre esquive et corps à corps)
const actor = this.actor; const actor = this.actor;
formData.combat = duplicate(formData.armes); formData.combat = foundry.utils.duplicate(formData.armes);
RdDItemArme.computeNiveauArmes(formData.combat, formData.competences); RdDItemArme.computeNiveauArmes(formData.combat, formData.competences);
formData.combat.push(RdDItemArme.mainsNues(actor)); formData.combat.push(RdDItemArme.mainsNues(actor));
formData.combat.push(RdDItemArme.empoignade(actor)); formData.combat.push(RdDItemArme.empoignade(actor));
@@ -221,7 +221,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
// Points de reve actuel // Points de reve actuel
this.html.find('.ptreve-actuel a').click(async event => this.actor.rollCarac('reve-actuel', true)) this.html.find('.ptreve-actuel a').click(async event => this.actor.rollCarac('reve-actuel', true))
this.html.find('.empoignade-label a').click(async event => RdDEmpoignade.onAttaqueEmpoignadeFromItem(RdDSheetUtility.getItem(event, this.actor))) this.html.find('.empoignade-label a').click(async event => RdDEmpoignade.onAttaqueEmpoignadeFromItem(RdDSheetUtility.getItem(event, this.actor)))
this.html.find('.arme-label a').click(async event => this.actor.rollArme(duplicate(this._getEventArmeCombat(event)))) this.html.find('.arme-label a').click(async event => this.actor.rollArme(foundry.utils.duplicate(this._getEventArmeCombat(event))))
// Initiative pour l'arme // Initiative pour l'arme
this.html.find('.arme-initiative a').click(async event => { this.html.find('.arme-initiative a').click(async event => {
@@ -388,7 +388,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
async _onSplitItem(item, split) { async _onSplitItem(item, split) {
if (split >= 1 && split < item.system.quantite) { if (split >= 1 && split < item.system.quantite) {
await item.diminuerQuantite(split); await item.diminuerQuantite(split);
const splitItem = duplicate(item); const splitItem = foundry.utils.duplicate(item);
splitItem.system.quantite = split; splitItem.system.quantite = split;
await this.actor.createEmbeddedDocuments('Item', [splitItem]) await this.actor.createEmbeddedDocuments('Item', [splitItem])
} }

View File

@@ -95,30 +95,32 @@ export class RdDActor extends RdDBaseActorSang {
return ![TYPES.competencecreature, TYPES.tarot, TYPES.service].includes(item.type) return ![TYPES.competencecreature, TYPES.tarot, TYPES.service].includes(item.type)
} }
isPersonnageJoueur() {
return this.hasPlayerOwner && this.prototypeToken.actorLink
}
isPersonnage() { return true } isPersonnage() { return true }
isHautRevant() { return this.system.attributs.hautrevant.value != "" } isHautRevant() { return this.system.attributs.hautrevant.value != "" }
/* -------------------------------------------- */ /* -------------------------------------------- */
getAgilite() { return Number(this.system.carac.agilite?.value ?? 0) } getAgilite() { return this.system.carac.agilite?.value ?? 0 }
getChance() { return Number(this.system.carac.chance?.value ?? 0) } getChance() { return this.system.carac.chance?.value ?? 0 }
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value) } getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
getChanceActuel() { return Misc.toInt(this.system.compteurs.chance?.value ?? 10) } getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
getMoralTotal() { return Number(this.system.compteurs.moral?.value ?? 0) } getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
/* -------------------------------------------- */ /* -------------------------------------------- */
getEtatGeneral(options = { ethylisme: false }) { getEtatGeneral(options = { ethylisme: false }) {
const etatGeneral = Misc.toInt(this.system.compteurs.etat?.value) const etatGeneral = this.system.compteurs.etat?.value ?? 0
if (options.ethylisme) { // Pour les jets d'Ethylisme, on retire le malus d'éthylisme (p.162)
// Pour les jets d'Ethylisme, on retire le malus d'éthylisme (p.162) const annuleMalusEthylisme = options.ethylisme ? this.malusEthylisme() : 0
return etatGeneral - this.malusEthylisme() return etatGeneral - annuleMalusEthylisme
}
return etatGeneral
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getActivePoisons() { getActivePoisons() {
return duplicate(this.items.filter(item => item.type == 'poison' && item.system.active)) return foundry.utils.duplicate(this.items.filter(item => item.type == 'poison' && item.system.active))
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -141,7 +143,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
getDemiReve() { return this.system.reve.tmrpos.coord } getDemiReve() { return this.system.reve.tmrpos.coord }
getDraconicList() { return this.itemTypes[TYPES.competence].filter(it => it.system.categorie == 'draconic') } getDraconicList() { return this.itemTypes[TYPES.competence].filter(it => it.system.categorie == 'draconic') }
getBestDraconic() { return duplicate(this.getDraconicList().sort(Misc.descending(it => it.system.niveau)).find(it => true)) } getBestDraconic() { return foundry.utils.duplicate(this.getDraconicList().sort(Misc.descending(it => it.system.niveau)).find(it => true)) }
getDraconicOuPossession() { getDraconicOuPossession() {
return [...this.getDraconicList().filter(it => it.system.niveau >= 0), return [...this.getDraconicList().filter(it => it.system.niveau >= 0),
super.getDraconicOuPossession()] super.getDraconicOuPossession()]
@@ -689,7 +691,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
let carac = this.findCaracByName(caracName); let carac = this.findCaracByName(caracName);
if (carac) { if (carac) {
carac = duplicate(carac); carac = foundry.utils.duplicate(carac);
const fromXp = Number(carac.xp); const fromXp = Number(carac.xp);
const fromValue = Number(carac.value); const fromValue = Number(carac.value);
let toXp = fromXp; let toXp = fromXp;
@@ -825,7 +827,7 @@ export class RdDActor extends RdDBaseActorSang {
async deleteExperienceLog(from, count) { async deleteExperienceLog(from, count) {
if (from >= 0 && count > 0) { if (from >= 0 && count > 0) {
let expLog = duplicate(this.system.experiencelog); let expLog = foundry.utils.duplicate(this.system.experiencelog);
expLog.splice(from, count); expLog.splice(from, count);
await this.update({ [`system.experiencelog`]: expLog }); await this.update({ [`system.experiencelog`]: expLog });
} }
@@ -1310,7 +1312,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async saouler(forceAlcool, alcool = undefined) { async saouler(forceAlcool, alcool = undefined) {
let ethylisme = duplicate(this.system.compteurs.ethylisme); let ethylisme = foundry.utils.duplicate(this.system.compteurs.ethylisme);
const etat = this.getEtatGeneral({ ethylisme: true }); const etat = this.getEtatGeneral({ ethylisme: true });
const nbDoses = Number(this.system.compteurs.ethylisme.nb_doses || 0); const nbDoses = Number(this.system.compteurs.ethylisme.nb_doses || 0);
@@ -1487,7 +1489,7 @@ export class RdDActor extends RdDBaseActorSang {
const niveauSuivant = Number(carac.value) + 1; const niveauSuivant = Number(carac.value) + 1;
let xpNeeded = RdDCarac.getCaracNextXp(niveauSuivant); let xpNeeded = RdDCarac.getCaracNextXp(niveauSuivant);
if (carac.xp >= xpNeeded) { if (carac.xp >= xpNeeded) {
carac = duplicate(carac); carac = foundry.utils.duplicate(carac);
carac.value = niveauSuivant; carac.value = niveauSuivant;
let checkXp = { let checkXp = {
@@ -1517,7 +1519,7 @@ export class RdDActor extends RdDBaseActorSang {
if (compData && newXP > 0) { if (compData && newXP > 0) {
let xpNeeded = RdDItemCompetence.getCompetenceNextXp(compData.system.niveau + 1); let xpNeeded = RdDItemCompetence.getCompetenceNextXp(compData.system.niveau + 1);
if (newXP >= xpNeeded) { if (newXP >= xpNeeded) {
let newCompData = duplicate(compData); let newCompData = foundry.utils.duplicate(compData);
newCompData.system.niveau += 1; newCompData.system.niveau += 1;
newCompData.system.xp = newXP; newCompData.system.xp = newXP;
let checkXp = { let checkXp = {
@@ -1623,14 +1625,14 @@ export class RdDActor extends RdDBaseActorSang {
return; return;
} }
// Duplication car les pts de reve sont modifiés dans le sort // Duplication car les pts de reve sont modifiés dans le sort
let sorts = duplicate(this.$filterSortList(this.itemTypes['sort'], coord)); let sorts = foundry.utils.duplicate(this.$filterSortList(this.itemTypes['sort'], coord));
if (sorts.length == 0) { if (sorts.length == 0) {
ui.notifications.info(`Aucun sort disponible en ${TMRUtility.getTMR(coord).label} !`); ui.notifications.info(`Aucun sort disponible en ${TMRUtility.getTMR(coord).label} !`);
return; return;
} }
const draconicList = this.computeDraconicAndSortIndex(sorts); const draconicList = this.computeDraconicAndSortIndex(sorts);
const reve = duplicate(this.system.carac.reve); const reve = foundry.utils.duplicate(this.system.carac.reve);
const dialog = await this.openRollDialog({ const dialog = await this.openRollDialog({
name: 'lancer-un-sort', name: 'lancer-un-sort',
@@ -1729,7 +1731,7 @@ export class RdDActor extends RdDBaseActorSang {
else { else {
rollData.depenseReve = 0; rollData.depenseReve = 0;
rollData.show.reveInsuffisant = true; rollData.show.reveInsuffisant = true;
mergeObject(rollData.rolled, RdDResolutionTable.getResultat("echec"), { overwrite: true }); foundry.utils.mergeObject(rollData.rolled, RdDResolutionTable.getResultat("echec"), { overwrite: true });
} }
} else { } else {
if (rolled.isETotal) { // Echec total ! if (rolled.isETotal) { // Echec total !
@@ -1871,7 +1873,7 @@ export class RdDActor extends RdDBaseActorSang {
diffConditions: 0, diffConditions: 0,
use: { libre: false, conditions: true }, use: { libre: false, conditions: true },
carac: { carac: {
[tacheData.system.carac]: duplicate(this.system.carac[tacheData.system.carac]) [tacheData.system.carac]: foundry.utils.duplicate(this.system.carac[tacheData.system.carac])
} }
}, },
callbackAction: r => this._tacheResult(r, options) callbackAction: r => this._tacheResult(r, options)
@@ -1882,7 +1884,7 @@ export class RdDActor extends RdDBaseActorSang {
async _tacheResult(rollData, options) { async _tacheResult(rollData, options) {
// Mise à jour de la tache // Mise à jour de la tache
rollData.appliquerFatigue = ReglesOptionnelles.isUsing("appliquer-fatigue"); rollData.appliquerFatigue = ReglesOptionnelles.isUsing("appliquer-fatigue");
rollData.tache = duplicate(rollData.tache); rollData.tache = foundry.utils.duplicate(rollData.tache);
rollData.tache.system.points_de_tache_courant += rollData.rolled.ptTache; rollData.tache.system.points_de_tache_courant += rollData.rolled.ptTache;
if (rollData.rolled.isETotal) { if (rollData.rolled.isETotal) {
rollData.tache.system.difficulte--; rollData.tache.system.difficulte--;
@@ -1906,21 +1908,21 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async _rollArt(artData, selected, oeuvre, callbackAction = r => this._resultArt(r)) { async _rollArt(artData, selected, oeuvre, callbackAction = r => this._resultArt(r)) {
oeuvre.system.niveau = oeuvre.system.niveau ?? 0; oeuvre.system.niveau = oeuvre.system.niveau ?? 0;
mergeObject(artData, foundry.utils.mergeObject(artData,
{ {
oeuvre: oeuvre, oeuvre: oeuvre,
art: oeuvre.type, art: oeuvre.type,
competence: duplicate(this.getCompetence(artData.compName ?? oeuvre.system.competence ?? artData.art)), competence: foundry.utils.duplicate(this.getCompetence(artData.compName ?? oeuvre.system.competence ?? artData.art)),
diffLibre: - oeuvre.system.niveau, diffLibre: - oeuvre.system.niveau,
diffConditions: 0, diffConditions: 0,
use: { libre: false, conditions: true, surenc: false }, use: { libre: false, conditions: true, surenc: false },
selectedCarac: duplicate(this.system.carac[selected]) selectedCarac: foundry.utils.duplicate(this.system.carac[selected])
}, },
{ overwrite: false }); { overwrite: false });
artData.competence.system.defaut_carac = selected; artData.competence.system.defaut_carac = selected;
if (!artData.forceCarac) { if (!artData.forceCarac) {
artData.forceCarac = {}; artData.forceCarac = {};
artData.forceCarac[selected] = duplicate(this.system.carac[selected]); artData.forceCarac[selected] = foundry.utils.duplicate(this.system.carac[selected]);
} }
await this.openRollDialog({ await this.openRollDialog({
@@ -1944,19 +1946,19 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollChant(id) { async rollChant(id) {
const artData = { art: 'chant', verbe: 'Chanter' }; const artData = { art: 'chant', verbe: 'Chanter' };
const oeuvre = duplicate(this.getChant(id)); const oeuvre = foundry.utils.duplicate(this.getChant(id));
await this._rollArt(artData, "ouie", oeuvre); await this._rollArt(artData, "ouie", oeuvre);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollDanse(id) { async rollDanse(id) {
const artData = { art: 'danse', verbe: 'Danser', forceCarac: {} }; const artData = { art: 'danse', verbe: 'Danser', forceCarac: {} };
const oeuvre = duplicate(this.findItemLike(id, artData.art)); const oeuvre = foundry.utils.duplicate(this.findItemLike(id, artData.art));
if (oeuvre.system.agilite) { if (oeuvre.system.agilite) {
artData.forceCarac['agilite'] = duplicate(this.system.carac.agilite); artData.forceCarac['agilite'] = foundry.utils.duplicate(this.system.carac.agilite);
} }
if (oeuvre.system.apparence) { if (oeuvre.system.apparence) {
artData.forceCarac['apparence'] = duplicate(this.system.carac.apparence); artData.forceCarac['apparence'] = foundry.utils.duplicate(this.system.carac.apparence);
} }
const selectedCarac = this._getCaracDanse(oeuvre); const selectedCarac = this._getCaracDanse(oeuvre);
await this._rollArt(artData, selectedCarac, oeuvre); await this._rollArt(artData, selectedCarac, oeuvre);
@@ -2059,7 +2061,7 @@ export class RdDActor extends RdDBaseActorSang {
const artData = { const artData = {
art: 'jeu', verbe: 'Jeu', art: 'jeu', verbe: 'Jeu',
use: { libre: true, conditions: true, }, use: { libre: true, conditions: true, },
competence: duplicate(this.getCompetence('jeu')), competence: foundry.utils.duplicate(this.getCompetence('jeu')),
forceCarac: {} forceCarac: {}
}; };
listCarac.forEach(c => artData.forceCarac[c] = this.system.carac[c]); listCarac.forEach(c => artData.forceCarac[c] = this.system.carac[c]);
@@ -2070,14 +2072,14 @@ export class RdDActor extends RdDBaseActorSang {
async rollOeuvre(id) { async rollOeuvre(id) {
const artData = { art: 'oeuvre', verbe: 'Interpréter' } const artData = { art: 'oeuvre', verbe: 'Interpréter' }
const oeuvre = duplicate(this.findItemLike(id, artData.art)) const oeuvre = foundry.utils.duplicate(this.findItemLike(id, artData.art))
await this._rollArt(artData, oeuvre.system.default_carac, oeuvre) await this._rollArt(artData, oeuvre.system.default_carac, oeuvre)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollMeditation(id) { async rollMeditation(id) {
const meditation = duplicate(this.getMeditation(id)); const meditation = foundry.utils.duplicate(this.getMeditation(id));
const competence = duplicate(this.getCompetence(meditation.system.competence)); const competence = foundry.utils.duplicate(this.getCompetence(meditation.system.competence));
competence.system.defaut_carac = "intellect"; // Meditation = toujours avec intellect competence.system.defaut_carac = "intellect"; // Meditation = toujours avec intellect
let meditationData = { let meditationData = {
competence: competence, competence: competence,
@@ -2143,7 +2145,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
let draconicList = this.getDraconicList() let draconicList = this.getDraconicList()
.map(draconic => { .map(draconic => {
let draconicLecture = duplicate(draconic); let draconicLecture = foundry.utils.duplicate(draconic);
draconicLecture.system.defaut_carac = "intellect"; draconicLecture.system.defaut_carac = "intellect";
return draconicLecture; return draconicLecture;
}); });
@@ -2312,7 +2314,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async _xpCarac(xpData) { async _xpCarac(xpData) {
if (xpData.xpCarac > 0) { if (xpData.xpCarac > 0) {
const carac = duplicate(this.system.carac) const carac = foundry.utils.duplicate(this.system.carac)
const code = RdDBaseActor._findCaracNode(carac, xpData.caracName) const code = RdDBaseActor._findCaracNode(carac, xpData.caracName)
const selectedCarac = carac[code] const selectedCarac = carac[code]
if (this.isCaracMax(code)) { if (this.isCaracMax(code)) {
@@ -2336,7 +2338,7 @@ export class RdDActor extends RdDBaseActorSang {
async _xpCaracDerivee(xpData) { async _xpCaracDerivee(xpData) {
const caracs = RdDActor._getComposantsCaracDerivee(xpData.caracName) const caracs = RdDActor._getComposantsCaracDerivee(xpData.caracName)
.map(c => mergeObject(this.system.carac[c], { isMax: this.isCaracMax(c) })) .map(c => foundry.utils.mergeObject(this.system.carac[c], { isMax: this.isCaracMax(c) }))
switch (caracs.filter(it => !it.isMax).length) { switch (caracs.filter(it => !it.isMax).length) {
case 0: case 0:
xpData.caracRepartitionManuelle = true; xpData.caracRepartitionManuelle = true;
@@ -2616,7 +2618,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async incDecItemUse(itemId, inc = 1) { async incDecItemUse(itemId, inc = 1) {
let itemUse = duplicate(this.getFlag(SYSTEM_RDD, 'itemUse') ?? {}); let itemUse = foundry.utils.duplicate(this.getFlag(SYSTEM_RDD, 'itemUse') ?? {});
itemUse[itemId] = (itemUse[itemId] ?? 0) + inc; itemUse[itemId] = (itemUse[itemId] ?? 0) + inc;
await this.setFlag(SYSTEM_RDD, 'itemUse', itemUse); await this.setFlag(SYSTEM_RDD, 'itemUse', itemUse);
console.log("ITEM USE INC", inc, itemUse); console.log("ITEM USE INC", inc, itemUse);
@@ -2684,7 +2686,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
static $transformSubActeurSuivant = (suivant, link) => { static $transformSubActeurSuivant = (suivant, link) => {
return mergeObject(RdDBaseActor.extractActorMin(suivant), { return foundry.utils.mergeObject(RdDBaseActor.extractActorMin(suivant), {
ephemere: !suivant.prototypeToken.actorLink, ephemere: !suivant.prototypeToken.actorLink,
coeur: link.coeur ?? 0, coeur: link.coeur ?? 0,
prochainCoeur: link.prochainCoeur ?? link.coeur ?? 0 prochainCoeur: link.prochainCoeur ?? link.coeur ?? 0
@@ -2710,7 +2712,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
async setPointsCoeur(subActorId, coeurs, options = { immediat: false }) { async setPointsCoeur(subActorId, coeurs, options = { immediat: false }) {
const newSuivants = duplicate(this.system.subacteurs.suivants) const newSuivants = foundry.utils.duplicate(this.system.subacteurs.suivants)
const amoureux = newSuivants.find(it => it.id == subActorId); const amoureux = newSuivants.find(it => it.id == subActorId);
if (amoureux) { if (amoureux) {
amoureux[options.immediat ? 'coeur' : 'prochainCoeur'] = coeurs amoureux[options.immediat ? 'coeur' : 'prochainCoeur'] = coeurs
@@ -2720,7 +2722,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
static $transformSubActeurVehicule = (vehicle, link) => { static $transformSubActeurVehicule = (vehicle, link) => {
return mergeObject(RdDBaseActor.extractActorMin(vehicle), { return foundry.utils.mergeObject(RdDBaseActor.extractActorMin(vehicle), {
system: { categorie: vehicle.system.categorie, etat: vehicle.system.etat } system: { categorie: vehicle.system.categorie, etat: vehicle.system.etat }
}) })
}; };
@@ -3064,7 +3066,7 @@ export class RdDActor extends RdDBaseActorSang {
incarnation.name = 'Réincarnation de ' + incarnation.name incarnation.name = 'Réincarnation de ' + incarnation.name
incarnation.system = { incarnation.system = {
carac: duplicate(this.system.carac), carac: foundry.utils.duplicate(this.system.carac),
heure: RdDTimestamp.defHeure(await RdDDice.rollTotal("1dh", { rollMode: "selfroll", showDice: SHOW_DICE })).key, heure: RdDTimestamp.defHeure(await RdDDice.rollTotal("1dh", { rollMode: "selfroll", showDice: SHOW_DICE })).key,
age: 18, age: 18,
biographie: '', biographie: '',

View File

@@ -11,7 +11,7 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(RdDBaseActorSheet.defaultOptions, { return foundry.utils.mergeObject(RdDBaseActorSheet.defaultOptions, {
width: 550 width: 550
}); });
} }

View File

@@ -286,7 +286,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
getCarac() { getCarac() {
// TODO: le niveau d'une entité de cauchemar devrait être exclu... // TODO: le niveau d'une entité de cauchemar devrait être exclu...
const carac = mergeObject(duplicate(this.system.carac), const carac = foundry.utils.mergeObject(foundry.utils.duplicate(this.system.carac),
{ {
'reve-actuel': this.getCaracReveActuel(), 'reve-actuel': this.getCaracReveActuel(),
'chance-actuelle': this.getCaracChanceActuelle() 'chance-actuelle': this.getCaracChanceActuelle()
@@ -421,6 +421,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async encaisser() { await RdDEncaisser.encaisser(this) } async encaisser() { await RdDEncaisser.encaisser(this) }
async encaisserDommagesRemote(rollData, attackerId, show) {
const attacker = game.actors.get(attackerId);
await this.encaisserDommages(rollData, attacker, show)
}
async encaisserDommages(rollData, attacker = undefined, show = undefined) { async encaisserDommages(rollData, attacker = undefined, show = undefined) {
if (attacker && !await attacker.accorder(this, 'avant-encaissement')) { if (attacker && !await attacker.accorder(this, 'avant-encaissement')) {
return; return;
@@ -430,8 +434,8 @@ export class RdDBaseActorReve extends RdDBaseActor {
RdDBaseActor.remoteActorCall({ RdDBaseActor.remoteActorCall({
tokenId: this.token?.id, tokenId: this.token?.id,
actorId: this.id, actorId: this.id,
method: 'encaisserDommages', method: 'encaisserDommagesRemote',
args: [rollData, show, attackerId] args: [rollData, attackerId, show]
}); });
return; return;
} }
@@ -455,7 +459,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
async onAppliquerJetEncaissement(encaissement, attacker) { } async onAppliquerJetEncaissement(encaissement, attacker) { }
async $afficherEncaissement(encaissement, show) { async $afficherEncaissement(encaissement, show) {
mergeObject(encaissement, { foundry.utils.mergeObject(encaissement, {
alias: this.name, alias: this.name,
hasPlayerOwner: this.hasPlayerOwner, hasPlayerOwner: this.hasPlayerOwner,
show: show ?? {} show: show ?? {}
@@ -467,7 +471,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
}); });
if (!encaissement.hasPlayerOwner && encaissement.endurance != 0) { if (!encaissement.hasPlayerOwner && encaissement.endurance != 0) {
encaissement = duplicate(encaissement); encaissement = foundry.utils.duplicate(encaissement);
encaissement.isGM = true; encaissement.isGM = true;
ChatMessage.create({ ChatMessage.create({
whisper: ChatMessage.getWhisperRecipients("GM"), whisper: ChatMessage.getWhisperRecipients("GM"),

View File

@@ -89,12 +89,12 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
/* -------------------------------------------- */ /* -------------------------------------------- */
async onAppliquerJetEncaissement(encaissement, attacker) { async onAppliquerJetEncaissement(encaissement, attacker) {
const santeOrig = duplicate(this.system.sante); const santeOrig = foundry.utils.duplicate(this.system.sante);
const blessure = await this.ajouterBlessure(encaissement, attacker); // Will update the result table const blessure = await this.ajouterBlessure(encaissement, attacker); // Will update the result table
const perteVie = await this.santeIncDec("vie", -encaissement.vie); const perteVie = await this.santeIncDec("vie", -encaissement.vie);
const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance, blessure?.isCritique()); const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance, blessure?.isCritique());
mergeObject(encaissement, { foundry.utils.mergeObject(encaissement, {
resteEndurance: perteEndurance.newValue, resteEndurance: perteEndurance.newValue,
sonne: perteEndurance.sonne, sonne: perteEndurance.sonne,
jetEndurance: perteEndurance.jetEndurance, jetEndurance: perteEndurance.jetEndurance,
@@ -108,7 +108,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
if (name == 'fatigue' && !ReglesOptionnelles.isUsing("appliquer-fatigue")) { if (name == 'fatigue' && !ReglesOptionnelles.isUsing("appliquer-fatigue")) {
return; return;
} }
const sante = duplicate(this.system.sante) const sante = foundry.utils.duplicate(this.system.sante)
let compteur = sante[name]; let compteur = sante[name];
if (!compteur) { if (!compteur) {
return; return;
@@ -135,7 +135,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
result.perte = perte; result.perte = perte;
if (perte > 1) { if (perte > 1) {
// Peut-être sonné si 2 points d'endurance perdus d'un coup // Peut-être sonné si 2 points d'endurance perdus d'un coup
mergeObject(result, await this.jetEndurance(result.newValue)); foundry.utils.mergeObject(result, await this.jetEndurance(result.newValue));
} else if (inc > 0) { } else if (inc > 0) {
await this.setSonne(false); await this.setSonne(false);
} }

View File

@@ -15,7 +15,7 @@ export class RdDBaseActorSheet extends ActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(ActorSheet.defaultOptions, { return foundry.utils.mergeObject(ActorSheet.defaultOptions, {
classes: ["rdd", "sheet", "actor"], classes: ["rdd", "sheet", "actor"],
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }], dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }],
@@ -312,7 +312,7 @@ export class RdDBaseActorSheet extends ActorSheet {
async _onSplitItem(item, split) { async _onSplitItem(item, split) {
if (split >= 1 && split < item.system.quantite) { if (split >= 1 && split < item.system.quantite) {
await item.diminuerQuantite(split); await item.diminuerQuantite(split);
const splitItem = duplicate(item); const splitItem = foundry.utils.duplicate(item);
splitItem.system.quantite = split; splitItem.system.quantite = split;
await this.actor.createEmbeddedDocuments('Item', [splitItem]) await this.actor.createEmbeddedDocuments('Item', [splitItem])
} }

View File

@@ -85,6 +85,8 @@ export class RdDBaseActor extends Actor {
return game.actors.get(actorId) return game.actors.get(actorId)
} }
isPersonnageJoueur() { return false }
static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; }; static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; };
static getParentActor(document) { static getParentActor(document) {
@@ -121,7 +123,7 @@ export class RdDBaseActor extends Actor {
constructor(docData, context = {}) { constructor(docData, context = {}) {
if (!context.rdd?.ready) { if (!context.rdd?.ready) {
mergeObject(context, { rdd: { ready: true } }); foundry.utils.mergeObject(context, { rdd: { ready: true } });
const ActorConstructor = game.system.rdd.actorClasses[docData.type]; const ActorConstructor = game.system.rdd.actorClasses[docData.type];
if (ActorConstructor) { if (ActorConstructor) {
if (!docData.img) { if (!docData.img) {
@@ -375,7 +377,7 @@ export class RdDBaseActor extends Actor {
if (cout > 0) { if (cout > 0) {
RdDAudio.PlayContextAudio("argent"); RdDAudio.PlayContextAudio("argent");
} }
const chatAchatItem = duplicate(achat.vente); const chatAchatItem = foundry.utils.duplicate(achat.vente);
chatAchatItem.quantiteTotal = quantite; chatAchatItem.quantiteTotal = quantite;
ChatMessage.create({ ChatMessage.create({
user: achat.userId, user: achat.userId,
@@ -451,7 +453,7 @@ export class RdDBaseActor extends Actor {
type: item.type, type: item.type,
img: item.img, img: item.img,
name: item.name, name: item.name,
system: mergeObject(item.system, { quantite: isItemEmpilable ? quantite : undefined }) system: foundry.utils.mergeObject(item.system, { quantite: isItemEmpilable ? quantite : undefined })
}; };
const newItems = isItemEmpilable ? [baseItem] : Array.from({ length: quantite }, (_, i) => baseItem); const newItems = isItemEmpilable ? [baseItem] : Array.from({ length: quantite }, (_, i) => baseItem);
const items = await this.createEmbeddedDocuments("Item", newItems); const items = await this.createEmbeddedDocuments("Item", newItems);
@@ -647,7 +649,7 @@ export class RdDBaseActor extends Actor {
sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list sourceActor.buildSubConteneurObjetList(itemId, itemsList); // Get itemId list
const itemsDataToCreate = itemsList.map(it => sourceActor.getItem(it.id)) const itemsDataToCreate = itemsList.map(it => sourceActor.getItem(it.id))
.map(it => duplicate(it)) .map(it => foundry.utils.duplicate(it))
.map(it => { it.system.contenu = []; return it; }); .map(it => { it.system.contenu = []; return it; });
let newItems = await this.createEmbeddedDocuments('Item', itemsDataToCreate); let newItems = await this.createEmbeddedDocuments('Item', itemsDataToCreate);

View File

@@ -11,7 +11,7 @@ export class RdDCommerceSheet extends RdDBaseActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-actor-sheet.html", template: "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-actor-sheet.html",
width: 600, height: 720, width: 600, height: 720,
tabs: [] tabs: []
@@ -27,7 +27,7 @@ export class RdDCommerceSheet extends RdDBaseActorSheet {
async getData() { async getData() {
const formData = await super.getData(); const formData = await super.getData();
if (this.actor.token && this.actor.token != this.actor.prototypeToken) { if (this.actor.token && this.actor.token != this.actor.prototypeToken) {
mergeObject(formData, foundry.utils.mergeObject(formData,
{ {
title: this.actor.token.name, title: this.actor.token.name,
token: { token: {

View File

@@ -9,7 +9,7 @@ export class RdDCreatureSheet extends RdDBaseActorSangSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(RdDBaseActorSangSheet.defaultOptions, { return foundry.utils.mergeObject(RdDBaseActorSangSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-creature-sheet.html", template: "systems/foundryvtt-reve-de-dragon/templates/actor-creature-sheet.html",
width: 640, height: 720 width: 640, height: 720
}); });

View File

@@ -48,7 +48,7 @@ export class RdDCreature extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async setEntiteReveAccordee(attacker) { async setEntiteReveAccordee(attacker) {
if (this.isEntite([ENTITE_INCARNE])) { if (this.isEntite([ENTITE_INCARNE])) {
let resonnance = duplicate(this.system.sante.resonnance); let resonnance = foundry.utils.duplicate(this.system.sante.resonnance);
if (resonnance.actors.find(it => it == attacker.id)) { if (resonnance.actors.find(it => it == attacker.id)) {
// déjà accordé // déjà accordé
return; return;

View File

@@ -6,7 +6,7 @@ export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(RdDBaseActorReveSheet.defaultOptions, { return foundry.utils.mergeObject(RdDBaseActorReveSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-entite-sheet.html", template: "systems/foundryvtt-reve-de-dragon/templates/actor-entite-sheet.html",
width: 640, height: 720, width: 640, height: 720,
}); });

View File

@@ -76,7 +76,7 @@ export class RdDEntite extends RdDBaseActorReve {
async onAppliquerJetEncaissement(encaissement, attacker) { async onAppliquerJetEncaissement(encaissement, attacker) {
const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance); const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance);
mergeObject(encaissement, { foundry.utils.mergeObject(encaissement, {
resteEndurance: perteEndurance.newValue, resteEndurance: perteEndurance.newValue,
endurance: perteEndurance.perte endurance: perteEndurance.perte
}); });
@@ -93,7 +93,7 @@ export class RdDEntite extends RdDBaseActorReve {
/* -------------------------------------------- */ /* -------------------------------------------- */
async setEntiteReveAccordee(attacker) { async setEntiteReveAccordee(attacker) {
if (this.isEntite([ENTITE_INCARNE])) { if (this.isEntite([ENTITE_INCARNE])) {
let resonnance = duplicate(this.system.sante.resonnance); let resonnance = foundry.utils.duplicate(this.system.sante.resonnance);
if (resonnance.actors.find(it => it == attacker.id)) { if (resonnance.actors.find(it => it == attacker.id)) {
// déjà accordé // déjà accordé
return; return;

View File

@@ -12,7 +12,7 @@ export const XP_TOPIC = {
export class ExperienceLog { export class ExperienceLog {
static async add(actor, topic, from, to, raison, manuel = false) { static async add(actor, topic, from, to, raison, manuel = false) {
if (!actor.hasPlayerOwner || !actor.isPersonnage()) { if (!actor.isPersonnageJoueur()) {
return return
} }
if (from == to) { if (from == to) {

View File

@@ -6,7 +6,7 @@ export class RdDActorVehiculeSheet extends RdDBaseActorSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(RdDBaseActorSheet.defaultOptions, { return foundry.utils.mergeObject(RdDBaseActorSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-vehicule-sheet.html", template: "systems/foundryvtt-reve-de-dragon/templates/actor-vehicule-sheet.html",
width: 640, height: 720, width: 640, height: 720,
}); });
@@ -15,7 +15,7 @@ export class RdDActorVehiculeSheet extends RdDBaseActorSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
async getData() { async getData() {
let formData = await super.getData(); let formData = await super.getData();
mergeObject(formData, foundry.utils.mergeObject(formData,
{ {
editable: this.isEditable, editable: this.isEditable,
cssClass: this.isEditable ? "editable" : "locked", cssClass: this.isEditable ? "editable" : "locked",

View File

@@ -131,7 +131,7 @@ export class ChatUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static blindMessageToGM(chatOptions) { static blindMessageToGM(chatOptions) {
let chatGM = duplicate(chatOptions); let chatGM = foundry.utils.duplicate(chatOptions);
chatGM.whisper = ChatUtility.getUsers(user => user.isGM); chatGM.whisper = ChatUtility.getUsers(user => user.isGM);
chatGM.content = "Message aveugle de " + game.user.name + "<br>" + chatOptions.content; chatGM.content = "Message aveugle de " + game.user.name + "<br>" + chatOptions.content;
console.log("blindMessageToGM", chatGM); console.log("blindMessageToGM", chatGM);

View File

@@ -69,7 +69,7 @@ export class RdDCoeur {
} }
static async applyCoeurChateauDormant(actor, message) { static async applyCoeurChateauDormant(actor, message) {
const newSuivants = duplicate(actor.system.subacteurs.suivants) const newSuivants = foundry.utils.duplicate(actor.system.subacteurs.suivants)
let count = 0 let count = 0
newSuivants.forEach(async link => { newSuivants.forEach(async link => {
const suivant = game.actors.get(link.id) const suivant = game.actors.get(link.id)

View File

@@ -2,8 +2,8 @@
export class DialogChoixXpCarac extends Dialog { export class DialogChoixXpCarac extends Dialog {
static async choix(actor, xpData, caracs) { static async choix(actor, xpData, caracs) {
caracs = caracs.map(it => mergeObject({ ajout: 0 }, it)) caracs = caracs.map(it => foundry.utils.mergeObject({ ajout: 0 }, it))
xpData = mergeObject({ reste: xpData.xpCarac }, xpData) xpData = foundry.utils.mergeObject({ reste: xpData.xpCarac }, xpData)
const dialogData = { const dialogData = {
title: `Choisissez la répartition d'expérience`, title: `Choisissez la répartition d'expérience`,
content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-choix-xp-carac.hbs", { content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-choix-xp-carac.hbs", {
@@ -24,7 +24,7 @@ export class DialogChoixXpCarac extends Dialog {
} }
constructor(dialogData, dialogOptions, actor, xpData, caracs) { constructor(dialogData, dialogOptions, actor, xpData, caracs) {
dialogData = mergeObject(dialogData, { dialogData = foundry.utils.mergeObject(dialogData, {
default: 'appliquer', default: 'appliquer',
buttons: { buttons: {
'appliquer': { icon:'<i class="fa-solid fa-check"></i>', label: "Ajouter la répartition", callback: it => this.appliquerSelection() } 'appliquer': { icon:'<i class="fa-solid fa-check"></i>', label: "Ajouter la répartition", callback: it => this.appliquerSelection() }

View File

@@ -21,7 +21,7 @@ export class DialogFabriquerPotion extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
static prepareData(actor, item) { static prepareData(actor, item) {
let potionData = duplicate(item) let potionData = foundry.utils.duplicate(item)
potionData.nbBrinsSelect = RdDUtility.buildListOptions( potionData.nbBrinsSelect = RdDUtility.buildListOptions(
DialogFabriquerPotion.nombreBrinsMinimum(item), DialogFabriquerPotion.nombreBrinsMinimum(item),
DialogFabriquerPotion.nombreBrinsOptimal(item)); DialogFabriquerPotion.nombreBrinsOptimal(item));

View File

@@ -47,7 +47,7 @@ export class DialogConsommer extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
static prepareData(actor, item) { static prepareData(actor, item) {
let consommerData = { let consommerData = {
item: duplicate(item), item: foundry.utils.duplicate(item),
cuisine: actor.getCompetence('cuisine'), cuisine: actor.getCompetence('cuisine'),
choix: { choix: {
doses: 1, doses: 1,

View File

@@ -56,7 +56,7 @@ export class DialogItemVente extends Dialog {
} }
updateVente(update) { updateVente(update) {
mergeObject(this.venteData, update); foundry.utils.mergeObject(this.venteData, update);
} }
getChoixVente() { getChoixVente() {

View File

@@ -139,7 +139,7 @@ export class RdDItemArme extends Item {
const uneOuDeuxMains = armeData.system.unemain && armeData.system.deuxmains; const uneOuDeuxMains = armeData.system.unemain && armeData.system.deuxmains;
const containsSlash = !Number.isInteger(armeData.system.dommages) && armeData.system.dommages.includes("/"); const containsSlash = !Number.isInteger(armeData.system.dommages) && armeData.system.dommages.includes("/");
if (containsSlash) { // Sanity check if (containsSlash) { // Sanity check
armeData = duplicate(armeData); armeData = foundry.utils.duplicate(armeData);
const tableauDegats = armeData.system.dommages.split("/"); const tableauDegats = armeData.system.dommages.split("/");
if (aUneMain) if (aUneMain)

View File

@@ -199,7 +199,7 @@ export class RdDItemCompetence extends Item {
if (idOrName == undefined || idOrName == "") { if (idOrName == undefined || idOrName == "") {
return RdDItemCompetence.sansCompetence(); return RdDItemCompetence.sansCompetence();
} }
options = mergeObject(options, { preFilter: it => it.isCompetence(), description: 'compétence' }, { overwrite: false }); options = foundry.utils.mergeObject(options, { preFilter: it => it.isCompetence(), description: 'compétence' }, { overwrite: false });
return RdDItemCompetence.findFirstItem(list, idOrName, options); return RdDItemCompetence.findFirstItem(list, idOrName, options);
} }
@@ -257,7 +257,7 @@ export class RdDItemCompetence extends Item {
/* -------------------------------------------- */ /* -------------------------------------------- */
static computeResumeArchetype(competences) { static computeResumeArchetype(competences) {
const computed = duplicate(limitesArchetypes); const computed = foundry.utils.duplicate(limitesArchetypes);
computed.forEach(it => { it.nombre = 0; it.reste = it.nombreMax; }); computed.forEach(it => { it.nombre = 0; it.reste = it.nombreMax; });
competences.map(it => Math.max(0, it.system.niveau_archetype)) competences.map(it => Math.max(0, it.system.niveau_archetype))

View File

@@ -33,7 +33,7 @@ export class RdDItemCompetenceCreature extends Item {
if (categorieAttaque != undefined) { if (categorieAttaque != undefined) {
// si c'est un Item compétence: cloner pour ne pas modifier la compétence // si c'est un Item compétence: cloner pour ne pas modifier la compétence
let arme = item.clone(); let arme = item.clone();
mergeObject(arme, foundry.utils.mergeObject(arme,
{ {
action: item.isCompetencePossession() ? 'possession' : 'attaque', action: item.isCompetencePossession() ? 'possession' : 'attaque',
system: { system: {

View File

@@ -57,7 +57,7 @@ export class Monnaie {
} }
static creerDeniers(fortune) { static creerDeniers(fortune) {
const deniers = duplicate(MONNAIE_ETAIN); const deniers = foundry.utils.duplicate(MONNAIE_ETAIN);
deniers.system.quantite = fortune; deniers.system.quantite = fortune;
return deniers; return deniers;
} }

View File

@@ -39,7 +39,7 @@ export class RdDItemSheet extends ItemSheet {
/** @override */ /** @override */
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
classes: [SYSTEM_RDD, "sheet", "item"], classes: [SYSTEM_RDD, "sheet", "item"],
template: RdDItemSheet.defaultTemplate(RdDItemSheet.ITEM_TYPE), template: RdDItemSheet.defaultTemplate(RdDItemSheet.ITEM_TYPE),
width: 550, width: 550,
@@ -108,8 +108,8 @@ export class RdDItemSheet extends ItemSheet {
const competences = await SystemCompendiums.getCompetences('personnage'); const competences = await SystemCompendiums.getCompetences('personnage');
formData.categories = this.item.getCategories() formData.categories = this.item.getCategories()
if (this.item.type == 'tache' || this.item.type == 'livre' || this.item.type == 'meditation' || this.item.type == 'oeuvre') { if (this.item.type == 'tache' || this.item.type == 'livre' || this.item.type == 'meditation' || this.item.type == 'oeuvre') {
formData.caracList = duplicate(game.system.model.Actor.personnage.carac) formData.caracList = foundry.utils.duplicate(game.system.model.Actor.personnage.carac)
formData.caracList["reve-actuel"] = duplicate(game.system.model.Actor.personnage.reve.reve) formData.caracList["reve-actuel"] = foundry.utils.duplicate(game.system.model.Actor.personnage.reve.reve)
formData.competences = competences; formData.competences = competences;
} }
if (this.item.type == 'arme') { if (this.item.type == 'arme') {
@@ -228,7 +228,7 @@ export class RdDItemSheet extends ItemSheet {
}); });
} }
const updateItemTimestamp = (path, timestamp) => this.item.update({ [path]: duplicate(timestamp) }) const updateItemTimestamp = (path, timestamp) => this.item.update({ [path]: foundry.utils.duplicate(timestamp) })
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.debut', updateItemTimestamp); RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.debut', updateItemTimestamp);
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.fin', updateItemTimestamp); RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.fin', updateItemTimestamp);

View File

@@ -317,8 +317,8 @@ export class RdDItem extends Item {
const timestampFin = await this.calculerFinPeriodeTemporel(timestampDebut); const timestampFin = await this.calculerFinPeriodeTemporel(timestampDebut);
await actor.updateEmbeddedDocuments('Item', [{ await actor.updateEmbeddedDocuments('Item', [{
_id: this.id, _id: this.id,
'system.temporel.debut': duplicate(timestampDebut), 'system.temporel.debut': foundry.utils.duplicate(timestampDebut),
'system.temporel.fin': duplicate(timestampFin), 'system.temporel.fin': foundry.utils.duplicate(timestampFin),
}]) }])
} }
} }

View File

@@ -39,7 +39,7 @@ export class RdDItemBlessure extends RdDItem {
ui.notifications.warn(`Pas de tâche de soins pour une blessure ${gravite}`) ui.notifications.warn(`Pas de tâche de soins pour une blessure ${gravite}`)
return undefined; return undefined;
} }
return mergeObject(duplicate(BASE_TACHE_SOIN_BLESSURE), tache) return foundry.utils.mergeObject(foundry.utils.duplicate(BASE_TACHE_SOIN_BLESSURE), tache)
} }
static async applyFullBlessure(actor, gravite) { static async applyFullBlessure(actor, gravite) {
@@ -106,7 +106,7 @@ export class RdDItemBlessure extends RdDItem {
} }
async setSoinsBlessure(systemUpdate = {}) { async setSoinsBlessure(systemUpdate = {}) {
systemUpdate = mergeObject(systemUpdate, this.system, { overwrite: false }), systemUpdate = foundry.utils.mergeObject(systemUpdate, this.system, { overwrite: false }),
systemUpdate.soinscomplets.done = systemUpdate.premierssoins.done && systemUpdate.soinscomplets.done systemUpdate.soinscomplets.done = systemUpdate.premierssoins.done && systemUpdate.soinscomplets.done
await this.update({ await this.update({
img: this.getImgSoins(systemUpdate.gravite, systemUpdate.soinscomplets.done), img: this.getImgSoins(systemUpdate.gravite, systemUpdate.soinscomplets.done),
@@ -134,14 +134,14 @@ export class RdDItemBlessure extends RdDItem {
if (rolled.isETotal) { if (rolled.isETotal) {
message.content += ` -- une blessure ${label} s'infecte (temps de guérison augmenté de ${gravite} jours, perte de vie)`; message.content += ` -- une blessure ${label} s'infecte (temps de guérison augmenté de ${gravite} jours, perte de vie)`;
await actor.santeIncDec("vie", -1); await actor.santeIncDec("vie", -1);
mergeObject(update, { foundry.utils.mergeObject(update, {
system: { fin: { indexDate: timestamp.addJours(gravite).indexDate } } system: { fin: { indexDate: timestamp.addJours(gravite).indexDate } }
}); });
} }
else { else {
if (!isMaladeEmpoisonne && rolled.isSuccess && this.peutRetrograder(graviteMoindre, moindres)) { if (!isMaladeEmpoisonne && rolled.isSuccess && this.peutRetrograder(graviteMoindre, moindres)) {
message.content += ` -- une blessure ${label} cicatrise`; message.content += ` -- une blessure ${label} cicatrise`;
mergeObject(update, { foundry.utils.mergeObject(update, {
system: { system: {
gravite: graviteMoindre, gravite: graviteMoindre,
temporel: { fin: { indexDate: timestamp.addJours(graviteMoindre).indexDate } } temporel: { fin: { indexDate: timestamp.addJours(graviteMoindre).indexDate } }

View File

@@ -38,7 +38,7 @@ export class RdDItemMaladie extends RdDItem {
await mal.actor.updateEmbeddedDocuments('Item', [{ await mal.actor.updateEmbeddedDocuments('Item', [{
_id: mal.id, _id: mal.id,
'system.temporel.fin': duplicate(timestampFin), 'system.temporel.fin': foundry.utils.duplicate(timestampFin),
}]) }])
} }
} }

View File

@@ -8,7 +8,7 @@ const TYPE_ITEMS_NATURELS = ["faune", "herbe", "plante", "ingredient"];
export class RdDItemInventaireSheet extends RdDItemSheet { export class RdDItemInventaireSheet extends RdDItemSheet {
static get defaultOptions() { static get defaultOptions() {
return mergeObject(RdDItemSheet.defaultOptions, { return foundry.utils.mergeObject(RdDItemSheet.defaultOptions, {
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "informations" }] tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "informations" }]
}); });
} }
@@ -23,7 +23,7 @@ export class RdDItemInventaireSheet extends RdDItemSheet {
async getData() { async getData() {
const formData = await super.getData(); const formData = await super.getData();
return mergeObject(formData, { return foundry.utils.mergeObject(formData, {
milieux: await game.system.rdd.environnement.autresMilieux(this.item) milieux: await game.system.rdd.environnement.autresMilieux(this.item)
}); });
} }

View File

@@ -6,7 +6,7 @@ export class RdDRencontreItemSheet extends RdDItemSheet {
static get ITEM_TYPE() { return "rencontre" }; static get ITEM_TYPE() { return "rencontre" };
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }] tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }]
}); });
} }
@@ -24,7 +24,7 @@ export class RdDRencontreItemSheet extends RdDItemSheet {
/* -------------------------------------------- */ /* -------------------------------------------- */
async getData() { async getData() {
const formData = await super.getData(); const formData = await super.getData();
mergeObject(formData, { foundry.utils.mergeObject(formData, {
effets: { effets: {
succes: { succes: {
liste: RdDRencontre.getEffetsSucces(), liste: RdDRencontre.getEffetsSucces(),

View File

@@ -189,7 +189,7 @@ class _10_2_5_ArmesTirLancer extends Migration {
get version() { return "10.2.5"; } get version() { return "10.2.5"; }
migrateArmeTirLancer(it) { migrateArmeTirLancer(it) {
let updates = mergeObject({ _id: it.id }, this.getMapping(it).updates); let updates = foundry.utils.mergeObject({ _id: it.id }, this.getMapping(it).updates);
console.log(it.name, updates); console.log(it.name, updates);
return updates; return updates;
} }
@@ -364,7 +364,7 @@ class _10_4_6_ServicesEnCommerces extends Migration {
const item = await RdDItem.getCorrespondingItem(serviceRefItem); const item = await RdDItem.getCorrespondingItem(serviceRefItem);
const itemToCreate = { const itemToCreate = {
name: item.name, img: item.img, type: item.type, name: item.name, img: item.img, type: item.type,
system: mergeObject({ cout: serviceRefItem.system.cout, quantite: serviceRefItem.system.quantite }, item.system, { overwrite: false }) system: foundry.utils.mergeObject({ cout: serviceRefItem.system.cout, quantite: serviceRefItem.system.quantite }, item.system, { overwrite: false })
}; };
return itemToCreate; return itemToCreate;
} }

View File

@@ -46,7 +46,7 @@ export class Misc {
} }
static typeName(type, subType) { static typeName(type, subType) {
return subType ? game.i18n.localize(`TYPES.${type}.${Misc.upperFirst(subType)}`) return subType ? game.i18n.localize(`TYPES.${type}.${subType}`)
: ''; : '';
} }
@@ -200,7 +200,7 @@ export class Misc {
/* -------------------------------------------- */ /* -------------------------------------------- */
static findFirstLike(value, elements, options = {}) { static findFirstLike(value, elements, options = {}) {
options = mergeObject({ options = foundry.utils.mergeObject({
mapper: it => it.name, mapper: it => it.name,
preFilter: it => true, preFilter: it => true,
description: 'valeur', description: 'valeur',
@@ -225,7 +225,7 @@ export class Misc {
} }
static findAllLike(value, elements, options = {}) { static findAllLike(value, elements, options = {}) {
options = mergeObject({ options = foundry.utils.mergeObject({
mapper: it => it.name, mapper: it => it.name,
preFilter: it => true, preFilter: it => true,
description: 'valeur', description: 'valeur',

View File

@@ -128,7 +128,7 @@ export class RdDCombatManager extends Combat {
// Send a chat message // Send a chat message
let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode"); let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode");
let messageData = mergeObject( let messageData = foundry.utils.mergeObject(
{ {
speaker: { speaker: {
scene: canvas.scene._id, scene: canvas.scene._id,
@@ -218,7 +218,7 @@ export class RdDCombatManager extends Combat {
static $prepareAttaqueArme(infoAttaque) { static $prepareAttaqueArme(infoAttaque) {
const comp = infoAttaque.competences.find(c => c.name == infoAttaque.competence); const comp = infoAttaque.competences.find(c => c.name == infoAttaque.competence);
const attaque = duplicate(infoAttaque.arme); const attaque = foundry.utils.duplicate(infoAttaque.arme);
attaque.action = 'attaque'; attaque.action = 'attaque';
attaque.system.competence = infoAttaque.competence; attaque.system.competence = infoAttaque.competence;
attaque.system.dommagesReels = infoAttaque.dommagesReel; attaque.system.dommagesReels = infoAttaque.dommagesReel;
@@ -885,12 +885,12 @@ export class RdDCombat {
this.removeChatMessageActionsPasseArme(attackerRoll.passeArme); this.removeChatMessageActionsPasseArme(attackerRoll.passeArme);
if (essaisPrecedents) { if (essaisPrecedents) {
mergeObject(attackerRoll.essais, essaisPrecedents, { overwrite: true }); foundry.utils.mergeObject(attackerRoll.essais, essaisPrecedents, { overwrite: true });
} }
// # utilisation esquive // # utilisation esquive
const corpsACorps = this.defender.getCompetenceCorpsACorps({ onMessage: it => console.info(it, this.defender) }); const corpsACorps = this.defender.getCompetenceCorpsACorps({ onMessage: it => console.info(it, this.defender) });
const esquives = duplicate(this.defender.getCompetencesEsquive()) const esquives = foundry.utils.duplicate(this.defender.getCompetencesEsquive())
esquives.forEach(e => e.system.nbUsage = e?._id ? this.defender.getItemUse(e._id) : 0); esquives.forEach(e => e.system.nbUsage = e?._id ? this.defender.getItemUse(e._id) : 0);
const paramChatDefense = { const paramChatDefense = {
@@ -1282,7 +1282,7 @@ export class RdDCombat {
attackerRoll.defenderTokenId = defenderTokenId; attackerRoll.defenderTokenId = defenderTokenId;
await this.computeRecul(defenderRoll); await this.computeRecul(defenderRoll);
this.defender.encaisserDommages(attackerRoll, this.attacker, defenderRoll?.show); await this.defender.encaisserDommages(attackerRoll, this.attacker, defenderRoll?.show);
} }
else { // envoi à un GM: les joueurs n'ont pas le droit de modifier les personnages qu'ils ne possèdent pas else { // envoi à un GM: les joueurs n'ont pas le droit de modifier les personnages qu'ils ne possèdent pas
game.socket.emit(SYSTEM_SOCKET_ID, { game.socket.emit(SYSTEM_SOCKET_ID, {

View File

@@ -463,14 +463,13 @@ export class RdDCommands {
let motif = params.slice(1, params.length - 2); let motif = params.slice(1, params.length - 2);
let name = params[params.length - 1]; let name = params[params.length - 1];
const personnages = game.actors.filter(actor => actor.isPersonnageJoueur());
if (name == undefined) { if (name == undefined) {
for (let actor of game.actors) { for (let actor of personnages) {
// TODO: ne plus stresser les entités de cauchemar!
await actor.distribuerStress('stress', stress, motif); await actor.distribuerStress('stress', stress, motif);
} }
} else { } else {
//console.log(stressValue, nomJoueur); let actor = Misc.findActor(name, personnages) ?? Misc.findPlayer(name)?.character
let actor = Misc.findActor(name, game.actors.filter(it => it.hasPlayerOwner)) ?? Misc.findPlayer(name)?.character
if (actor) { if (actor) {
await actor.distribuerStress('stress', stress, motif); await actor.distribuerStress('stress', stress, motif);
} }

View File

@@ -14,10 +14,10 @@ export class RdDConfirm {
"cancel": RdDConfirm._createButtonCancel() "cancel": RdDConfirm._createButtonCancel()
}; };
if (options.settingConfirmer) { if (options.settingConfirmer) {
buttons = mergeObject(RdDConfirm._createButtonActionSave(options), buttons); buttons = foundry.utils.mergeObject(RdDConfirm._createButtonActionSave(options), buttons);
} }
if (autresActions) { if (autresActions) {
buttons = mergeObject(autresActions, buttons); buttons = foundry.utils.mergeObject(autresActions, buttons);
} }
const dialogDetails = { const dialogDetails = {
title: options.title, title: options.title,

View File

@@ -98,7 +98,7 @@ export class RdDEmpoignade {
/* -------------------------------------------- */ /* -------------------------------------------- */
static getEmpoignadeById(actor, id) { static getEmpoignadeById(actor, id) {
let emp = actor.itemTypes[TYPES.empoignade].find(it => it.system.empoignadeid == id) let emp = actor.itemTypes[TYPES.empoignade].find(it => it.system.empoignadeid == id)
return emp && duplicate(emp) || undefined; return emp && foundry.utils.duplicate(emp) || undefined;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -108,7 +108,7 @@ export class RdDEmpoignade {
(it.system.empoigneurid == defender.id && it.system.empoigneid == attacker.id) (it.system.empoigneurid == defender.id && it.system.empoigneid == attacker.id)
) )
if (emp) { if (emp) {
return duplicate(emp); return foundry.utils.duplicate(emp);
} }
return undefined; return undefined;
} }
@@ -267,7 +267,7 @@ export class RdDEmpoignade {
return return
} }
empoignade = duplicate(empoignade) empoignade = foundry.utils.duplicate(empoignade)
let defenderRoll = { let defenderRoll = {
mode, attacker, defender, empoignade, attackerRoll, mode, attacker, defender, empoignade, attackerRoll,
diffLibre: attackerRoll.diffLibre, diffLibre: attackerRoll.diffLibre,

View File

@@ -24,7 +24,7 @@ export class RdDPossession {
if (!poss) { if (!poss) {
poss = defender.items.find(poss => poss.type == TYPES.possession && poss.system.victime.actorid == defender.id); poss = defender.items.find(poss => poss.type == TYPES.possession && poss.system.victime.actorid == defender.id);
} }
return poss && duplicate(poss) || undefined; return poss && foundry.utils.duplicate(poss) || undefined;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -52,7 +52,7 @@ export class RdDPossession {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async onConjurerPossession(attacker, possession) { static async onConjurerPossession(attacker, possession) {
possession = duplicate(possession); possession = foundry.utils.duplicate(possession);
RdDPossession.$updateEtatPossession(possession) RdDPossession.$updateEtatPossession(possession)
const defender = game.actors.get(possession.system.entite.actorid); const defender = game.actors.get(possession.system.entite.actorid);
@@ -80,7 +80,7 @@ export class RdDPossession {
ui.notifications.warn("Une erreur s'est produite : Aucune possession trouvée !!") ui.notifications.warn("Une erreur s'est produite : Aucune possession trouvée !!")
return return
} }
possession = duplicate(possession) possession = foundry.utils.duplicate(possession)
// Update for draconic roll // Update for draconic roll
let rollData = { let rollData = {
mode: "defense", mode: "defense",

View File

@@ -114,7 +114,7 @@ export class RdDResolutionTable {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async roll(caracValue, finalLevel, rollData = {}) { static async roll(caracValue, finalLevel, rollData = {}) {
let chances = duplicate(this.computeChances(caracValue, finalLevel)); let chances = foundry.utils.duplicate(this.computeChances(caracValue, finalLevel));
this._updateChancesWithBonus(chances, rollData.bonus, finalLevel); this._updateChancesWithBonus(chances, rollData.bonus, finalLevel);
this._updateChancesFactor(chances, rollData.diviseurSignificative); this._updateChancesFactor(chances, rollData.diviseurSignificative);
chances.showDice = rollData.showDice; chances.showDice = rollData.showDice;
@@ -158,7 +158,7 @@ export class RdDResolutionTable {
static _updateChancesFactor(chances, diviseur) { static _updateChancesFactor(chances, diviseur) {
if (chances.level > -11 && diviseur && diviseur > 1) { if (chances.level > -11 && diviseur && diviseur > 1) {
let newScore = Math.floor(chances.score / diviseur); let newScore = Math.floor(chances.score / diviseur);
mergeObject(chances, this._computeCell(undefined, newScore), { overwrite: true }); foundry.utils.mergeObject(chances, this._computeCell(undefined, newScore), { overwrite: true });
} }
} }
@@ -166,27 +166,27 @@ export class RdDResolutionTable {
static _updateChancesWithBonus(chances, bonus, finalLevel) { static _updateChancesWithBonus(chances, bonus, finalLevel) {
if (bonus && finalLevel > -11) { if (bonus && finalLevel > -11) {
let newScore = Number(chances.score) + bonus; let newScore = Number(chances.score) + bonus;
mergeObject(chances, this._computeCell(undefined, newScore), { overwrite: true }); foundry.utils.mergeObject(chances, this._computeCell(undefined, newScore), { overwrite: true });
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static significativeRequise(chances) { static significativeRequise(chances) {
chances.roll = Math.floor(chances.score / 2); chances.roll = Math.floor(chances.score / 2);
mergeObject(chances, reussites.find(x => x.code == 'sign'), { overwrite: true }); foundry.utils.mergeObject(chances, reussites.find(x => x.code == 'sign'), { overwrite: true });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static succesRequis(chances) { static succesRequis(chances) {
chances.roll = chances.score; chances.roll = chances.score;
mergeObject(chances, reussites.find(x => x.code == 'norm'), { overwrite: true }); foundry.utils.mergeObject(chances, reussites.find(x => x.code == 'norm'), { overwrite: true });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async rollChances(chances, diviseur, forceDiceResult = -1) { static async rollChances(chances, diviseur, forceDiceResult = -1) {
chances.forceDiceResult = forceDiceResult <= 0 || forceDiceResult > 100 ? undefined : { total: forceDiceResult }; chances.forceDiceResult = forceDiceResult <= 0 || forceDiceResult > 100 ? undefined : { total: forceDiceResult };
chances.roll = await RdDDice.rollTotal("1d100", chances); chances.roll = await RdDDice.rollTotal("1d100", chances);
mergeObject(chances, this.computeReussite(chances, chances.roll, diviseur), { overwrite: true }); foundry.utils.mergeObject(chances, this.computeReussite(chances, chances.roll, diviseur), { overwrite: true });
return chances; return chances;
} }

View File

@@ -38,7 +38,7 @@ export class RdDRollResolutionTable extends Dialog {
diffLibre: 0, diffLibre: 0,
use: { conditions:true, libre:true } use: { conditions:true, libre:true }
} }
mergeObject(rollData, defRollData, { overwrite: false }); foundry.utils.mergeObject(rollData, defRollData, { overwrite: false });
for (let i = 1; i < 21; i++) { for (let i = 1; i < 21; i++) {
const key = `${i}`; const key = `${i}`;
rollData.carac[key] = { type: "number", value: i, label: key } rollData.carac[key] = { type: "number", value: i, label: key }

View File

@@ -65,7 +65,7 @@ export class RdDRoll extends Dialog {
defaultRollData.carac["reve-actuel"] = actor.system.reve.reve defaultRollData.carac["reve-actuel"] = actor.system.reve.reve
} }
mergeObject(rollData, defaultRollData, { recursive: true, overwrite: false }); foundry.utils.mergeObject(rollData, defaultRollData, { recursive: true, overwrite: false });
if (rollData.forceCarac) { if (rollData.forceCarac) {
rollData.carac = rollData.forceCarac; rollData.carac = rollData.forceCarac;
} }

View File

@@ -16,7 +16,7 @@ export class RdDSheetUtility {
isObserver: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER, isObserver: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER,
isOwner: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER isOwner: userRightLevel >= CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER
} }
mergeObject(options, newOptions); foundry.utils.mergeObject(options, newOptions);
return options; return options;
} }
@@ -76,7 +76,7 @@ export class RdDSheetUtility {
static async _onSplitItem(item, split, actor) { static async _onSplitItem(item, split, actor) {
if (split >= 1 && split < item.system.quantite) { if (split >= 1 && split < item.system.quantite) {
await item.diminuerQuantite(split); await item.diminuerQuantite(split);
const splitItem = duplicate(item); const splitItem = foundry.utils.duplicate(item);
// todo: ajouter dans le même conteneur? // todo: ajouter dans le même conteneur?
splitItem.system.quantite = split; splitItem.system.quantite = split;
await actor.createEmbeddedDocuments('Item', [splitItem]) await actor.createEmbeddedDocuments('Item', [splitItem])

View File

@@ -44,16 +44,15 @@ export class RdDTMRDialog extends Dialog {
type: Number, type: Number,
range: TMR_DISPLAY_SIZE.range range: TMR_DISPLAY_SIZE.range
}) })
await PixiTMR.init()
} }
static async create(actor, tmrData) { static async create(actor, tmrData) {
await PixiTMR.init()
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html', tmrData); let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html', tmrData);
if (tmrData.mode != 'visu' && !game.user.isGM) { if (tmrData.mode != 'visu' && !game.user.isGM) {
ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatMessage.getWhisperRecipients("GM") }); ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatMessage.getWhisperRecipients("GM") });
} }
return new RdDTMRDialog(html, actor, tmrData); return new RdDTMRDialog(html, actor, tmrData)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -71,7 +70,7 @@ export class RdDTMRDialog extends Dialog {
'z-index': 40 'z-index': 40
} }
super(dialogConf, dialogOptions); super(dialogConf, dialogOptions);
this.tmrdata = duplicate(tmrData); this.tmrdata = foundry.utils.duplicate(tmrData);
this.actor = actor; this.actor = actor;
this.actor.tmrApp = this; // reference this app in the actor structure this.actor.tmrApp = this; // reference this app in the actor structure
this.viewOnly = tmrData.mode == "visu" this.viewOnly = tmrData.mode == "visu"
@@ -298,13 +297,12 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
async updateValuesDisplay() { async updateValuesDisplay() {
if (!this.rendered) { if (this.viewOnly || !this.rendered) {
return; return;
} }
const coord = this._getCoordActor(); const coord = this._getCoordActor();
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord)); HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord));
let ptsreve = document.getElementById("tmr-pointsreve-value"); let ptsreve = document.getElementById("tmr-pointsreve-value");
ptsreve.innerHTML = this.actor.system.reve.reve.value; ptsreve.innerHTML = this.actor.system.reve.reve.value;
@@ -409,7 +407,7 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
$marquerCasesTMR(listCoordTMR) { $marquerCasesTMR(listCoordTMR) {
this.currentRencontre.locList = duplicate(listCoordTMR); // And track of allowed location this.currentRencontre.locList = foundry.utils.duplicate(listCoordTMR); // And track of allowed location
this.currentRencontre.graphics = listCoordTMR.map(coordTMR => this.pixiTMR.addMarkTMR(coordTMR)) this.currentRencontre.graphics = listCoordTMR.map(coordTMR => this.pixiTMR.addMarkTMR(coordTMR))
} }
@@ -538,7 +536,7 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
_rollPresentCite(rencData) { _rollPresentCite(rencData) {
let rolled = RdDResolutionTable.computeChances(rencData.reve, 0); let rolled = RdDResolutionTable.computeChances(rencData.reve, 0);
mergeObject(rolled, { caracValue: rencData.reve, finalLevel: 0, roll: rolled.score }); foundry.utils.mergeObject(rolled, { caracValue: rencData.reve, finalLevel: 0, roll: rolled.score });
RdDResolutionTable.succesRequis(rolled); RdDResolutionTable.succesRequis(rolled);
return rolled; return rolled;
} }
@@ -681,7 +679,7 @@ export class RdDTMRDialog extends Dialog {
if (this.isCaseHumide(tmr)) { if (this.isCaseHumide(tmr)) {
let rollData = { let rollData = {
actor: this.actor, actor: this.actor,
competence: duplicate(this.actor.getBestDraconic()), competence: foundry.utils.duplicate(this.actor.getBestDraconic()),
tmr: tmr, tmr: tmr,
canClose: false, canClose: false,
diffLibre: -7, diffLibre: -7,
@@ -806,7 +804,7 @@ export class RdDTMRDialog extends Dialog {
async _conquerir(tmr, options) { async _conquerir(tmr, options) {
let rollData = { let rollData = {
actor: this.actor, actor: this.actor,
competence: duplicate(this.actor.getBestDraconic()), competence: foundry.utils.duplicate(this.actor.getBestDraconic()),
tmr: tmr, tmr: tmr,
canClose: options.canClose ?? false, canClose: options.canClose ?? false,
diffLibre: options.difficulte ?? -7, diffLibre: options.difficulte ?? -7,

View File

@@ -31,7 +31,7 @@ function _buildAllSegmentsFatigue(max) {
const cycle = [5, 2, 4, 1, 3, 0]; const cycle = [5, 2, 4, 1, 3, 0];
const fatigue = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; const fatigue = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
for (let i = 0; i <= max; i++) { for (let i = 0; i <= max; i++) {
const ligneFatigue = duplicate(fatigue[i]); const ligneFatigue = foundry.utils.duplicate(fatigue[i]);
const caseIncrementee = cycle[i % 6]; const caseIncrementee = cycle[i % 6];
ligneFatigue[caseIncrementee]++; ligneFatigue[caseIncrementee]++;
ligneFatigue[caseIncrementee + 6]++; ligneFatigue[caseIncrementee + 6]++;
@@ -45,7 +45,7 @@ function _buildAllSegmentsFatigue(max) {
function _cumulSegmentsFatigue(matrix) { function _cumulSegmentsFatigue(matrix) {
let cumulMatrix = []; let cumulMatrix = [];
for (let line of matrix) { for (let line of matrix) {
let cumul = duplicate(line); let cumul = foundry.utils.duplicate(line);
for (let i = 1; i < 12; i++) { for (let i = 1; i < 12; i++) {
cumul[i] += cumul[i - 1]; cumul[i] += cumul[i - 1];
@@ -607,10 +607,10 @@ export class RdDUtility {
for (let encaissement of table) { for (let encaissement of table) {
if ((encaissement.minimum === undefined || encaissement.minimum <= degats) if ((encaissement.minimum === undefined || encaissement.minimum <= degats)
&& (encaissement.maximum === undefined || degats <= encaissement.maximum)) { && (encaissement.maximum === undefined || degats <= encaissement.maximum)) {
return duplicate(encaissement); return foundry.utils.duplicate(encaissement);
} }
} }
return duplicate(table[0]); return foundry.utils.duplicate(table[0]);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@@ -166,7 +166,7 @@ export class RollDataAjustements {
/* -------------------------------------------- */ /* -------------------------------------------- */
static calcul(rollData, actor) { static calcul(rollData, actor) {
// s'assurer de la correction des infos rollData // s'assurer de la correction des infos rollData
mergeObject(rollData, { ajustements: {}, use: {} }, { overwrite: false }) foundry.utils.mergeObject(rollData, { ajustements: {}, use: {} }, { overwrite: false })
for (var key in referenceAjustements) { for (var key in referenceAjustements) {
const reference = referenceAjustements[key]; const reference = referenceAjustements[key];

View File

@@ -71,7 +71,7 @@ export class ReglesOptionnelles extends FormApplication {
static get defaultOptions() { static get defaultOptions() {
const options = super.defaultOptions; const options = super.defaultOptions;
mergeObject(options, { foundry.utils.mergeObject(options, {
id: "regles-optionnelles", id: "regles-optionnelles",
template: "systems/foundryvtt-reve-de-dragon/templates/settings/regles-optionnelles.html", template: "systems/foundryvtt-reve-de-dragon/templates/settings/regles-optionnelles.html",
height: 650, height: 650,
@@ -86,7 +86,7 @@ export class ReglesOptionnelles extends FormApplication {
getData() { getData() {
let formData = super.getData(); let formData = super.getData();
const regles = listeReglesOptionnelles.filter(it => game.user.isGM || it.scope == "client").map(it => { const regles = listeReglesOptionnelles.filter(it => game.user.isGM || it.scope == "client").map(it => {
it = duplicate(it); it = foundry.utils.duplicate(it);
it.id = ReglesOptionnelles._getIdRegle(it.name); it.id = ReglesOptionnelles._getIdRegle(it.name);
it.active = ReglesOptionnelles.isSet(it.name); it.active = ReglesOptionnelles.isSet(it.name);
return it; return it;

View File

@@ -94,7 +94,7 @@ export class StatusEffects extends FormApplication {
static prepareActiveEffect(effectId) { static prepareActiveEffect(effectId) {
let status = rddStatusEffects.find(it => it.id == effectId) let status = rddStatusEffects.find(it => it.id == effectId)
if (status) { if (status) {
status = duplicate(status) status = foundry.utils.duplicate(status)
status.statuses = [effectId] status.statuses = [effectId]
} }
return status; return status;
@@ -125,7 +125,7 @@ export class StatusEffects extends FormApplication {
getData() { getData() {
const used = StatusEffects._getUseStatusEffects(); const used = StatusEffects._getUseStatusEffects();
let formData = super.getData(); let formData = super.getData();
formData.effects = duplicate(CONFIG.RDD.allEffects); formData.effects = foundry.utils.duplicate(CONFIG.RDD.allEffects);
formData.effects.forEach(it => it.active = used.includes(it.id)) formData.effects.forEach(it => it.active = used.includes(it.id))
return formData; return formData;
} }

View File

@@ -27,7 +27,7 @@ export class SystemCompendiums extends FormApplication {
static init() { static init() {
Object.keys(CONFIGURABLE_COMPENDIUMS).forEach(compendium => { Object.keys(CONFIGURABLE_COMPENDIUMS).forEach(compendium => {
const definition = CONFIGURABLE_COMPENDIUMS[compendium]; const definition = CONFIGURABLE_COMPENDIUMS[compendium];
mergeObject(definition, { foundry.utils.mergeObject(definition, {
compendium: compendium, compendium: compendium,
default: SystemCompendiums._getDefaultCompendium(compendium), default: SystemCompendiums._getDefaultCompendium(compendium),
setting: SystemCompendiums._getSettingCompendium(compendium) setting: SystemCompendiums._getSettingCompendium(compendium)
@@ -138,7 +138,7 @@ export class SystemCompendiums extends FormApplication {
static get defaultOptions() { static get defaultOptions() {
const options = super.defaultOptions; const options = super.defaultOptions;
mergeObject(options, { foundry.utils.mergeObject(options, {
id: "system-compendiums", id: "system-compendiums",
template: "systems/foundryvtt-reve-de-dragon/templates/settings/system-compendiums.html", template: "systems/foundryvtt-reve-de-dragon/templates/settings/system-compendiums.html",
height: 'fit-content', height: 'fit-content',
@@ -152,7 +152,7 @@ export class SystemCompendiums extends FormApplication {
getData() { getData() {
const systemCompendiums = Object.values(CONFIGURABLE_COMPENDIUMS) const systemCompendiums = Object.values(CONFIGURABLE_COMPENDIUMS)
.map(it => mergeObject(it, { value: SystemCompendiums.getCompendium(it.compendium) })); .map(it => foundry.utils.mergeObject(it, { value: SystemCompendiums.getCompendium(it.compendium) }));
const availableCompendiums = game.packs.map(pack => { const availableCompendiums = game.packs.map(pack => {
return { return {
name: pack.collection, name: pack.collection,
@@ -160,7 +160,7 @@ export class SystemCompendiums extends FormApplication {
type: pack.metadata.type type: pack.metadata.type
} }
}); });
return mergeObject(super.getData(), { return foundry.utils.mergeObject(super.getData(), {
systemCompendiums: systemCompendiums, systemCompendiums: systemCompendiums,
availableCompendiums: availableCompendiums availableCompendiums: availableCompendiums
}); });

View File

@@ -17,7 +17,7 @@ export class AppAstrologie extends Application {
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/sommeil/app-astrologie.hbs", template: "systems/foundryvtt-reve-de-dragon/templates/sommeil/app-astrologie.hbs",
title: "Astrologie", title: "Astrologie",
width: 'fit-content', width: 'fit-content',
@@ -37,7 +37,7 @@ export class AppAstrologie extends Application {
getData(options) { getData(options) {
this.appData = super.getData(options) this.appData = super.getData(options)
const calendrier = game.system.rdd.calendrier; const calendrier = game.system.rdd.calendrier;
mergeObject(this.appData, { foundry.utils.mergeObject(this.appData, {
isGM: game.user.isGM, isGM: game.user.isGM,
isActor: this.actor != undefined, isActor: this.actor != undefined,
calendrier: calendrier.getTimestamp().toCalendrier(), calendrier: calendrier.getTimestamp().toCalendrier(),
@@ -85,7 +85,7 @@ export class AppAstrologie extends Application {
const nbAstral = calendrier.getNombreAstral() const nbAstral = calendrier.getNombreAstral()
const heures = RdDTimestamp.heures(); const heures = RdDTimestamp.heures();
return { return {
ajustementsActors: game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner) ajustementsActors:game.actors.filter(actor => actor.isPersonnageJoueur())
.map(actor => this.getAjustementActor(actor, nbAstral, heures)), .map(actor => this.getAjustementActor(actor, nbAstral, heures)),
nombresAstraux: calendrier.getNombresAstraux().map(na => this.getDetailNombreAstral(na)) nombresAstraux: calendrier.getNombresAstraux().map(na => this.getDetailNombreAstral(na))
} }
@@ -104,7 +104,7 @@ export class AppAstrologie extends Application {
} }
getDetailNombreAstral(nombreAstral) { getDetailNombreAstral(nombreAstral) {
const detail = duplicate(nombreAstral); const detail = foundry.utils.duplicate(nombreAstral);
const timestamp = new RdDTimestamp({ indexDate: nombreAstral.index }); const timestamp = new RdDTimestamp({ indexDate: nombreAstral.index });
detail.date = { mois: timestamp.mois, jour: timestamp.jour + 1 }; detail.date = { mois: timestamp.mois, jour: timestamp.jour + 1 };
detail.valeursFausses.forEach(fausse => fausse.actorName = game.actors.get(fausse.actorId).name ?? "Inconnu"); detail.valeursFausses.forEach(fausse => fausse.actorName = game.actors.get(fausse.actorId).name ?? "Inconnu");

View File

@@ -3,10 +3,8 @@ export class DialogChateauDormant extends Dialog {
static async create() { static async create() {
const date = game.system.rdd.calendrier.dateCourante(); const date = game.system.rdd.calendrier.dateCourante();
const actors = game.actors.filter(actor => actor.hasPlayerOwner && actor.isPersonnage());
const dialogData = { const dialogData = {
actors: actors, actors: game.actors.filter(actor => actor.isPersonnageJoueur()),
date: date, date: date,
motifStress: `Nuit du ${date}`, motifStress: `Nuit du ${date}`,
finChateauDormant: game.system.rdd.calendrier.getTimestampFinChateauDormant() finChateauDormant: game.system.rdd.calendrier.getTimestampFinChateauDormant()

View File

@@ -6,7 +6,7 @@ export class DialogStress extends Dialog {
motif: "Motif", motif: "Motif",
stress: 10, stress: 10,
immediat: false, immediat: false,
actors: game.actors.filter(actor => actor.hasPlayerOwner && actor.isPersonnage()) actors: game.actors.filter(actor => actor.isPersonnageJoueur())
.map(actor => ({ .map(actor => ({
id: actor.id, id: actor.id,
name: actor.name, name: actor.name,

View File

@@ -61,7 +61,7 @@ export class RdDCalendrierEditor extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
updateData(calendrierData) { updateData(calendrierData) {
this.calendrierData = duplicate(calendrierData); this.calendrierData = foundry.utils.duplicate(calendrierData);
} }
} }

View File

@@ -35,7 +35,7 @@ export class RdDCalendrier extends Application {
} }
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
title: "Calendrier", title: "Calendrier",
template: TEMPLATE_CALENDRIER, template: TEMPLATE_CALENDRIER,
classes: ["calendar"], classes: ["calendar"],
@@ -120,7 +120,7 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */ /* -------------------------------------------- */
fillCalendrierData(formData = {}) { fillCalendrierData(formData = {}) {
mergeObject(formData, this.timestamp.toCalendrier()); foundry.utils.mergeObject(formData, this.timestamp.toCalendrier());
formData.isGM = game.user.isGM; formData.isGM = game.user.isGM;
formData.heures = RdDTimestamp.definitions() formData.heures = RdDTimestamp.definitions()
formData.horlogeAnalogique = this.horlogeAnalogique; formData.horlogeAnalogique = this.horlogeAnalogique;

View File

@@ -202,7 +202,7 @@ export class RdDTimestamp {
} }
static setWorldTime(timestamp) { static setWorldTime(timestamp) {
game.settings.set(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING, duplicate(timestamp)); game.settings.set(SYSTEM_RDD, WORLD_TIMESTAMP_SETTING, foundry.utils.duplicate(timestamp));
} }
/** construit un RdDTimestamp à partir de l'année/mois/jour/heure?/minute? */ /** construit un RdDTimestamp à partir de l'année/mois/jour/heure?/minute? */

View File

@@ -117,7 +117,7 @@ function $loadFilters(parameters) {
export class FenetreRechercheTirage extends Application { export class FenetreRechercheTirage extends Application {
static get defaultOptions() { static get defaultOptions() {
return mergeObject(super.defaultOptions, { return foundry.utils.mergeObject(super.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/tirage/fenetre-recherche-tirage.hbs", template: "systems/foundryvtt-reve-de-dragon/templates/tirage/fenetre-recherche-tirage.hbs",
title: `Recherches et tirages`, title: `Recherches et tirages`,
width: 600, width: 600,
@@ -133,7 +133,7 @@ export class FenetreRechercheTirage extends Application {
const parameters = { const parameters = {
milieux: milieux, milieux: milieux,
filterMilieux: $filterMilieux(milieux), filterMilieux: $filterMilieux(milieux),
filterGroups: duplicate(FILTER_GROUPS).filter(it => it.group), filterGroups: foundry.utils.duplicate(FILTER_GROUPS).filter(it => it.group),
} }
const options = {} const options = {}
$loadFilters(parameters); $loadFilters(parameters);
@@ -147,7 +147,7 @@ export class FenetreRechercheTirage extends Application {
} }
async getData() { async getData() {
return mergeObject(await super.getData(), this.parameters) return foundry.utils.mergeObject(await super.getData(), this.parameters)
} }
_canDragStart() { return true; } _canDragStart() { return true; }
@@ -294,7 +294,7 @@ class FenetreRechercheConfiguration extends Dialog {
static async create() { static async create() {
const configuration = { const configuration = {
compendiums: game.packs.filter(it => it.metadata.type == 'Item').map(it => it.metadata) compendiums: game.packs.filter(it => it.metadata.type == 'Item').map(it => it.metadata)
.map(it => mergeObject({ selected: game.system.rdd.environnement.compendiums.includes(it.id) }, it)) .map(it => foundry.utils.mergeObject({ selected: game.system.rdd.environnement.compendiums.includes(it.id) }, it))
} }
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/tirage/fenetre-recherche-configuration.hbs", configuration); const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/tirage/fenetre-recherche-configuration.hbs", configuration);
new FenetreRechercheConfiguration(html).render(true); new FenetreRechercheConfiguration(html).render(true);

View File

@@ -107,7 +107,7 @@ export class EffetsRencontre {
} }
static rdd_part_tete = async (dialog, context) => { static rdd_part_tete = async (dialog, context) => {
mergeObject(context, { foundry.utils.mergeObject(context, {
tete: context.rolled.isPart, tete: context.rolled.isPart,
poesie: await Poetique.getExtrait() poesie: await Poetique.getExtrait()
}) })
@@ -118,7 +118,7 @@ export class EffetsRencontre {
} }
static rdd_echec_queue = async (dialog, context) => { static rdd_echec_queue = async (dialog, context) => {
mergeObject(context, { foundry.utils.mergeObject(context, {
queues: [await context.actor.ajouterQueue()], queues: [await context.actor.ajouterQueue()],
poesie: await Poetique.getExtrait() poesie: await Poetique.getExtrait()
}) })

View File

@@ -1,4 +1,3 @@
import { SYSTEM_RDD } from "../constants.js";
import { Misc } from "../misc.js"; import { Misc } from "../misc.js";
import { TMRConstants, tmrTokenZIndex } from "../tmr-constants.js"; import { TMRConstants, tmrTokenZIndex } from "../tmr-constants.js";
import { TMRUtility } from "../tmr-utility.js"; import { TMRUtility } from "../tmr-utility.js";
@@ -14,12 +13,12 @@ export class PixiTMR {
static register(name, img) { static register(name, img) {
PixiTMR.textures[name] = img; PixiTMR.textures[name] = img;
} }
static async init() { static async init() {
await Promise.all( await Promise.all(
Object.values(PixiTMR.textures) Object.values(PixiTMR.textures)
.filter(img => img != undefined) .filter(img => img != undefined && !PIXI.utils.TextureCache[img])
.map(async img => PIXI.Sprite.from(await PIXI.Assets.load(img))) .map(async img => PIXI.Sprite.from(await PIXI.Assets.load(img))))
)
} }
constructor(tmrDialog, displaySize) { constructor(tmrDialog, displaySize) {
@@ -106,8 +105,9 @@ export class PixiTMR {
sprite(code, options = {}) { sprite(code, options = {}) {
let img = PixiTMR.getImgFromCode(code) let img = PixiTMR.getImgFromCode(code)
const texture = PIXI.utils.TextureCache[img] let texture = PIXI.utils.TextureCache[img]
if (!texture) { if (!texture) {
// TODO: charger la texture
console.error("Texture manquante", code, PIXI.utils.TextureCache) console.error("Texture manquante", code, PIXI.utils.TextureCache)
return; return;
} }

View File

@@ -33,11 +33,10 @@ export class DialogFatigueVoyage extends Dialog {
return return
} }
if (!DialogFatigueVoyage.dialog) { if (!DialogFatigueVoyage.dialog) {
const playerActors = game.actors.filter(actor => actor.hasPlayerOwner && actor.isPersonnage())
.map(actor => DialogFatigueVoyage.prepareActor(actor))
const parameters = { const parameters = {
tableauFatigueMarche: TABLEAU_FATIGUE_MARCHE, tableauFatigueMarche: TABLEAU_FATIGUE_MARCHE,
playerActors: playerActors, playerActors: game.actors.filter(actor => actor.isPersonnageJoueur())
.map(actor => DialogFatigueVoyage.prepareActor(actor)),
nombreHeures: 1, nombreHeures: 1,
} }
DialogFatigueVoyage.setModeDeplacement(parameters, undefined, undefined) DialogFatigueVoyage.setModeDeplacement(parameters, undefined, undefined)
@@ -148,7 +147,7 @@ export class DialogFatigueVoyage extends Dialog {
ChatMessage.create({ ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(it.actor.name), whisper: ChatUtility.getWhisperRecipientsAndGMs(it.actor.name),
content: await renderTemplate( content: await renderTemplate(
'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs', mergeObject(it, 'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs', foundry.utils.mergeObject(it,
{ {
parameters: this.parameters, parameters: this.parameters,
fatigueBase: fatigueBase, fatigueBase: fatigueBase,

View File

@@ -433,6 +433,7 @@ table {border: 1px solid #7a7971;}
} }
.flex-shrink { .flex-shrink {
flex: 'flex-shrink' ; flex: 'flex-shrink' ;
flex-shrink: 2;
} }
:is(.flex-grow, .flex-grow-3) { :is(.flex-grow, .flex-grow-3) {
flex-grow: 3; flex-grow: 3;
@@ -440,6 +441,12 @@ table {border: 1px solid #7a7971;}
.flex-grow-2 { .flex-grow-2 {
flex-grow: 2; flex-grow: 2;
} }
.flex-grow-1 {
flex-grow: 1;
}
.flex-grow-0-5 {
flex-grow: 0.5;
}
.voyage-liste-survies { .voyage-liste-survies {
max-width: 12rem; max-width: 12rem;
} }
@@ -1315,10 +1322,7 @@ div.competence-column div.categorie-competence{
margin-right: 0.2rem; margin-right: 0.2rem;
margin-left: 0.2rem; margin-left: 0.2rem;
} }
.blessures-title { .item-label {
font-weight: bold;
}
.alchimie-title {
font-weight: bold; font-weight: bold;
} }
.pointsreve-value { .pointsreve-value {

View File

@@ -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": "11.2.16", "version": "11.2.19",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.2.16.zip", "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.2.19.zip",
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json", "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json",
"changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md", "changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md",
"compatibility": { "compatibility": {
@@ -528,8 +528,10 @@
} }
], ],
"socket": true, "socket": true,
"gridDistance": 1, "grid": {
"gridUnits": "m", "distance": 1,
"units": "m"
},
"primaryTokenAttribute": "sante.vie", "primaryTokenAttribute": "sante.vie",
"secondaryTokenAttribute": "sante.endurance", "secondaryTokenAttribute": "sante.endurance",
"media": [ "media": [

View File

@@ -3,10 +3,12 @@
<ul class="item-list alterne-list"> <ul class="item-list alterne-list">
{{#each (trier recettesAlchimiques) as |recette id|}} {{#each (trier recettesAlchimiques) as |recette id|}}
<li class="item flexrow list-item" data-item-id="{{recette._id}}"><span class="competence-title recette-label item-edit"><a>{{recette.name}}</a></span> <li class="item flexrow list-item" data-item-id="{{recette._id}}"><span class="competence-title recette-label item-edit"><a>{{recette.name}}</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> &nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div>
</li> </li>
{{/each}} {{/each}}
</ul> </ul>

View File

@@ -36,6 +36,7 @@
<span class="item-controls"> <span class="item-controls">
<a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a> <a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</span> </span>
</li> </li>

View File

@@ -12,9 +12,11 @@
<img class="sheet-competence-img" src="{{tache.img}}"/> <img class="sheet-competence-img" src="{{tache.img}}"/>
<span class="competence-title tache-label"><a>{{tache.name}} <span class="competence-title tache-label"><a>{{tache.name}}
({{tache.system.points_de_tache_courant}}/{{tache.system.points_de_tache}})</a></span> ({{tache.system.points_de_tache_courant}}/{{tache.system.points_de_tache}})</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/if}} {{/if}}

View File

@@ -64,8 +64,8 @@
</span> </span>
<span class="competence-value">{{emp.system.pointsemp}}</span> <span class="competence-value">{{emp.system.pointsemp}}</span>
<div class="item-controls"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -23,8 +23,8 @@
/> />
{{#if @root.options.vueDetaillee}} {{#if @root.options.vueDetaillee}}
<div class="item-controls"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
{{/if}} {{/if}}
</li> </li>

View File

@@ -6,8 +6,8 @@
<img class="sheet-competence-img" src="{{possession.img}}" data-tooltip="{{possession.name}}"/> <img class="sheet-competence-img" src="{{possession.img}}" data-tooltip="{{possession.name}}"/>
<span class="competence-label">{{possession.name}}</span> <span class="competence-label">{{possession.name}}</span>
<div class="item-controls"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -48,7 +48,9 @@
{{#if @root.options.isGM}} {{#if @root.options.isGM}}
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
{{/if}} {{/if}}
</div> &nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div>
{{/if}} {{/if}}
</li> </li>
{{/unless}} {{/unless}}

View File

@@ -8,7 +8,8 @@
<a>{{queue.name}}</a> <a>{{queue.name}}</a>
</span> </span>
<div class="item-controls"> <div class="item-controls">
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
{{#if queue.system.refoulement}} {{#if queue.system.refoulement}}
<a class="item-action">Refouler</a> <a class="item-action">Refouler</a>
{{/if}} {{/if}}

View File

@@ -5,8 +5,9 @@
<li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}" data-tooltip="Souffle: {{souffle.name}}"> <li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}" data-tooltip="Souffle: {{souffle.name}}">
<img class="sheet-competence-img" src="{{souffle.img}}"/> <img class="sheet-competence-img" src="{{souffle.img}}"/>
<span class="item-edit flex-grow"><a>{{souffle.name}}</a></span> <span class="item-edit flex-grow"><a>{{souffle.name}}</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -5,8 +5,9 @@
<li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}" data-tooltip="Tête: {{tete.name}}"> <li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}" data-tooltip="Tête: {{tete.name}}">
<img class="sheet-competence-img" src="{{tete.img}}"/> <img class="sheet-competence-img" src="{{tete.img}}"/>
<span class="item-edit flex-grow"><a>{{tete.name}}</a></span> <span class="item-edit flex-grow"><a>{{tete.name}}</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -6,8 +6,10 @@
<img class="sheet-competence-img" src="{{casetmr.img}}"/> <img class="sheet-competence-img" src="{{casetmr.img}}"/>
<span class="item-edit"><a>{{casetmr.name}}</a></span> <span class="item-edit"><a>{{casetmr.name}}</a></span>
<span>{{casetmr.system.coord}} - {{caseTmr-label casetmr.system.coord}}</span> <span>{{casetmr.system.coord}} - {{caseTmr-label casetmr.system.coord}}</span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -5,9 +5,11 @@
<li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}" data-tooltip="Méditation: {{meditation.name}}"> <li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}" data-tooltip="Méditation: {{meditation.name}}">
<img class="sheet-competence-img" src="{{meditation.img}}"/> <img class="sheet-competence-img" src="{{meditation.img}}"/>
<span class="meditation-label flex-grow"><a data-item-id="{{meditation._id}}">{{meditation.name}} - {{meditation.system.competence}}</a></span> <span class="meditation-label flex-grow"><a data-item-id="{{meditation._id}}">{{meditation.name}} - {{meditation.system.competence}}</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Editer"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -10,7 +10,7 @@
{{#if rencontre.system.date}} {{#if rencontre.system.date}}
<span class="flex-shrink">{{upperFirst rencontre.system.heure}}, le {{rencontre.system.date}}</span> <span class="flex-shrink">{{upperFirst rencontre.system.heure}}, le {{rencontre.system.date}}</span>
{{/if}} {{/if}}
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>

View File

@@ -6,7 +6,7 @@
<img class="sheet-competence-img" src="{{signe.img}}"/> <img class="sheet-competence-img" src="{{signe.img}}"/>
<span class="item-edit flex-grow"><a>{{signe.name}}</a></span> <span class="item-edit flex-grow"><a>{{signe.name}}</a></span>
<span class="flex-shrink">{{signe.system.difficulte}}</span> <span class="flex-shrink">{{signe.system.difficulte}}</span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>

View File

@@ -7,7 +7,7 @@
<img class="sheet-competence-img" src="{{sort.img}}"/> <img class="sheet-competence-img" src="{{sort.img}}"/>
<span class="item-edit"><a>{{#if sort.system.echectotal}}Echec total: {{/if}}{{sort.name}} r{{sort.system.ptreve}}</a></span> <span class="item-edit"><a>{{#if sort.system.echectotal}}Echec total: {{/if}}{{sort.name}} r{{sort.system.ptreve}}</a></span>
<span>{{sort.system.coord}} - {{caseTmr-label sort.system.coord}}</span> <span>{{sort.system.coord}} - {{caseTmr-label sort.system.coord}}</span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-delete flex-shrink" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete flex-shrink" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>

View File

@@ -4,15 +4,16 @@
{{#each (trier sorts) as |sort key|}} {{#each (trier sorts) as |sort key|}}
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}" data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}"> <li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}" data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}">
<img class="sheet-competence-img" src="{{sort.img}}"/> <img class="sheet-competence-img" src="{{sort.img}}"/>
<span class="item-edit flex-grow-2"> <span class="item-edit flex-grow-3">
<a data-item-id="{{sort._id}}">{{sort.name}} <a data-item-id="{{sort._id}}">{{sort.name}}
- {{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}} - {{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
</a> </a>
</span> </span>
<span>{{#if sort.system.isrituel}}Rituel{{/if}}</span> <span class="flex-grow-0-5">{{#if sort.system.isrituel}}Rituel{{/if}}</span>
<span>{{sort.system.draconic}} / {{sort.system.difficulte}}</span> <span class="flex-grow-2">{{sort.system.draconic}}/{{sort.system.difficulte}}</span>
<div class="item-controls flex-shrink"> <div class="item-controls flex-shrink">
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -4,9 +4,11 @@
{{#each jeux as |jeu id|}} {{#each jeux as |jeu id|}}
<li class="item flexrow list-item" data-item-id="{{jeu._id}}"> <li class="item flexrow list-item" data-item-id="{{jeu._id}}">
<span class="competence-title jeu-label"><a>{{jeu.name}} (base {{jeu.system.base}})</a></span> <span class="competence-title jeu-label"><a>{{jeu.name}} (base {{jeu.system.base}})</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}

View File

@@ -22,7 +22,7 @@
{{/if}} {{/if}}
</span> </span>
{{/if}} {{/if}}
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="subacteur-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="subacteur-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>

View File

@@ -1,5 +1,5 @@
{{#if maladiesPoisons.length}} {{#if maladiesPoisons.length}}
<h3 class="blessures-title">Maladies & Poisons:</h3> <h3 class="item-label">Maladies & Poisons:</h3>
<ul class="item-list alterne-list"> <ul class="item-list alterne-list">
<li class="competence-header flexrow"> <li class="competence-header flexrow">
<span class="competence-title flex-grow competence-label">Nom</span> <span class="competence-title flex-grow competence-label">Nom</span>

View File

@@ -12,13 +12,21 @@
<li class="item flexrow" > <li class="item flexrow" >
<span class="competence-label">Refoulement : </span> <span class="competence-label">Refoulement : </span>
<span> <span>
{{#if options.isGM}} {{#if options.isGM}}
<input class="competence-value" type="text" name="system.reve.refoulement.value" value="{{system.reve.refoulement.value}}" data-dtype="Number"/> <input class="competence-value" type="text" name="system.reve.refoulement.value" value="{{system.reve.refoulement.value}}" data-dtype="Number"/>
{{else}} {{else}}
{{system.reve.refoulement.value}} {{system.reve.refoulement.value}}
{{/if}} {{/if}}
</span> </span>
</li> </li>
{{#if system.reve.reve.thanatosused}}
<li class="item flexrow" >
<span class="competence-label">La prochaine queue est une Ombre</span>
<span>
<img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp"/>
</span>
</li>
{{/if}}
</ul> </ul>
<hr> <hr>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/dragon-queues.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/actor/dragon-queues.html"}}

View File

@@ -5,8 +5,10 @@
<a>{{oeuvre.name}} (niveau {{oeuvre.system.niveau}})</a> <a>{{oeuvre.name}} (niveau {{oeuvre.system.niveau}})</a>
</span> </span>
<div class="item-controls"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>

View File

@@ -1,6 +1,6 @@
{{#if possessions.length}} {{#if possessions.length}}
{{!-- Possession --}} {{!-- Possession --}}
<h3 class="blessures-title">Possession:</h3> <h3 class="item-label">Possession:</h3>
<ul class="item-list alterne-list"> <ul class="item-list alterne-list">
<li class="competence-header flexrow"> <li class="competence-header flexrow">
<span class="competence-title flex-grow competence-label">Nom</span> <span class="competence-title flex-grow competence-label">Nom</span>
@@ -15,7 +15,9 @@
<div class="item-controls"> <div class="item-controls">
<a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
</div> &nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div>
</li> </li>
{{/each}} {{/each}}
</ul> </ul>

View File

@@ -8,9 +8,11 @@
({{tache.system.points_de_tache_courant}}{{#if ({{tache.system.points_de_tache_courant}}{{#if
(or @root.options.isGM (not tache.system.cacher_points_de_tache)) (or @root.options.isGM (not tache.system.cacher_points_de_tache))
}}/{{tache.system.points_de_tache}}{{/if}})</a></span> }}/{{tache.system.points_de_tache}}{{/if}})</a></span>
<div class="item-controls flex-shrink"> <div class="item-controls">
<a class="item-edit" data-tooltip="Edit Item"><i class="fas fa-edit"></i></a> <a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
&nbsp;
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
</div> </div>
</li> </li>
{{/unless}} {{/unless}}

View File

@@ -21,49 +21,48 @@
</div> </div>
{{else}} {{else}}
{{#if (and isGM hasPlayerOwner)}} {{#if (and isGM hasPlayerOwner)}}
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<h4>Le gardien gére les TMR du joueur, le joueur ne peut pas monter dans les TMR!</h4> <h4>Le gardien gére les TMR du joueur, le joueur ne peut pas monter dans les TMR!</h4>
</div> </div>
{{/if}} {{/if}}
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<img class="small-button-direction tmr-move" data-move="topleft" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-topleft.svg"> <img class="small-button-direction tmr-move" data-move="topleft" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-topleft.svg">
<img class="small-button-direction tmr-move" data-move="top" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-top.svg"> <img class="small-button-direction tmr-move" data-move="top" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-top.svg">
<img class="small-button-direction tmr-move" data-move="topright" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-topright.svg"> <img class="small-button-direction tmr-move" data-move="topright" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-topright.svg">
</div> </div>
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<label>Coordonnées : </label><span id="tmr-pos">0</span> <label>Coordonnées : </label><span id="tmr-pos">0</span>
</div> </div>
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<img class="small-button-direction tmr-move" data-move="bottomleft" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottomleft.svg"> <img class="small-button-direction tmr-move" data-move="bottomleft" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottomleft.svg">
<img class="small-button-direction tmr-move" data-move="bottom" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottom.svg"> <img class="small-button-direction tmr-move" data-move="bottom" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottom.svg">
<img class="small-button-direction tmr-move" data-move="bottomright" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottomright.svg"> <img class="small-button-direction tmr-move" data-move="bottomright" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottomright.svg">
</div> </div>
<div class="flex-group-center flex-shrink lire-signe-draconique"> <div class="flex-group-center flex-shrink lire-signe-draconique">
<a>Lire un signe draconique</a> <a>Lire un signe draconique</a>
</div> </div>
<div class="flex-group-center flex-shrink lancer-sort"> <div class="flex-group-center flex-shrink lancer-sort">
<a>Lancer un Sort</a> <a>Lancer un Sort</a>
</div> </div>
<hr> <hr>
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<label>Carac. Rêve : </label><label>{{caracReve}}</label> <label>Carac. Rêve : </label><label>{{caracReve}}</label>
</div> </div>
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<label>Rêve actuel : </label><span id="tmr-pointsreve-value">0</span> <label>Rêve actuel : </label><span id="tmr-pointsreve-value">0</span>
</div> </div>
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<label>Etat général : </label><span id="tmr-etatgeneral-value">0</span> <label>Etat général : </label><span id="tmr-etatgeneral-value">0</span>
</div> </div>
<div class="flex-group-center flex-shrink"> <div class="flex-group-center flex-shrink">
<label>Refoulement : </label><span id="tmr-refoulement-value">0</span> <label>Refoulement : </label><span id="tmr-refoulement-value">0</span>
</div> </div>
<div class="flex-group-center flex-actions-bar appliquerFatigue"> <div class="flex-group-center flex-actions-bar appliquerFatigue">
Fatigue Fatigue
<span id="tmr-fatigue-table">{{{fatigue.html}}}</span> <span id="tmr-fatigue-table">{{{fatigue.html}}}</span>
</div> </div>
{{/if}} {{/if}}
<div class="flex-group-center flex-grow"> <div class="flex-group-center flex-grow"></div>
</div>
</div> </div>
</div> </div>
</form> </form>

View File

@@ -8,7 +8,7 @@
<div class="tab items flexcol" data-group="primary" data-tab="informations"> <div class="tab items flexcol" data-group="primary" data-tab="informations">
<div class="form-group"> <div class="form-group">
<label for="system.competence">Compétence de mêlée</label> <label for="system.competence">Compétence de mêlée</label>
<select name="system.competence" id="competence" data-dtype="String"> <select name="system.competence" data-dtype="String">
{{#select system.competence}} {{#select system.competence}}
<option value="">- impossible -</option> <option value="">- impossible -</option>
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html" categorie='melee'}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html" categorie='melee'}}
@@ -26,7 +26,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.tir">Compétence de tir</label> <label for="system.tir">Compétence de tir</label>
<select name="system.tir" id="tir" data-dtype="String"> <select name="system.tir" data-dtype="String">
{{#select system.tir}} {{#select system.tir}}
<option value="">- impossible -</option> <option value="">- impossible -</option>
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html" categorie='tir'}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html" categorie='tir'}}
@@ -52,7 +52,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.categorie_parade">Catégorie parade </label> <label for="system.categorie_parade">Catégorie parade </label>
<select name="system.categorie_parade" id="categorie_parade" data-dtype="String"> <select name="system.categorie_parade" data-dtype="String">
{{#select system.categorie_parade}} {{#select system.categorie_parade}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-parade.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-parade.html"}}
{{/select}} {{/select}}
@@ -104,7 +104,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.initpremierround">Classe d'initiative au premier round (mêlée seulement) </label> <label for="system.initpremierround">Classe d'initiative au premier round (mêlée seulement) </label>
<select name="system.initpremierround" id="initpremierround" data-dtype="String"> <select name="system.initpremierround" data-dtype="String">
{{#select system.initpremierround}} {{#select system.initpremierround}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-initpremierround.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-initpremierround.html"}}
{{/select}} {{/select}}

View File

@@ -7,8 +7,8 @@
<input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="niveau">Mode spécifique</label> <label for="system.specific">Mode spécifique</label>
<select name="system.specific" id="specific" data-dtype="String"> <select name="system.specific" data-dtype="String">
{{#select system.specific}} {{#select system.specific}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-tmr-effet.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-tmr-effet.html"}}
{{/select}} {{/select}}

View File

@@ -3,11 +3,11 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Niveau</label> <label class="item-label" for="system.niveau">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Référence / Auteur</label> <label for="system.reference">Référence / Auteur</label>
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
</div> </div>

View File

@@ -38,8 +38,8 @@
{{/if}} {{/if}}
{{#if isparade}} {{#if isparade}}
<div class="form-group"> <div class="form-group">
<label>Catégorie parade</label> <label for="system.categorie_parade">Catégorie parade</label>
<select name="system.categorie_parade" id="categorie_parade" data-dtype="String"> <select name="system.categorie_parade" data-dtype="String">
{{#select system.categorie_parade}} {{#select system.categorie_parade}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-parade.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-parade.html"}}
{{/select}} {{/select}}

View File

@@ -9,7 +9,7 @@
<section class="sheet-body"> <section class="sheet-body">
<div class="tab items flexcol" data-group="primary" data-tab="informations"> <div class="tab items flexcol" data-group="primary" data-tab="informations">
<div class="form-group"> <div class="form-group">
<label for="xp">Capacite (points d'Enc.)</label> <label for="system.capacite">Capacite (points d'Enc.)</label>
<input class="attribute-value" type="text" name="system.capacite" value="{{system.capacite}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.capacite" value="{{system.capacite}}" data-dtype="Number"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.html"}}

View File

@@ -3,7 +3,7 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Type</label> <label class="item-label" for="system.type">Type</label>
<select name="system.type" data-dtype="String"> <select name="system.type" data-dtype="String">
{{#select system.type}} {{#select system.type}}
<option value="recreative">Récréative</option> <option value="recreative">Récréative</option>
@@ -12,19 +12,19 @@
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Agilité ?</label> <label class="item-label" for="system.agilite">Agilité ?</label>
<input class="attribute-value" type="checkbox" name="system.agilite" {{#if system.agilite}}checked{{/if}}/> <input class="attribute-value" type="checkbox" name="system.agilite" {{#if system.agilite}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Apparence ?</label> <label class="item-label" for="system.apparence">Apparence ?</label>
<input class="attribute-value" type="checkbox" name="system.apparence" {{#if system.apparence}}checked{{/if}}/> <input class="attribute-value" type="checkbox" name="system.apparence" {{#if system.apparence}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Niveau</label> <label class="item-label" for="system.niveau">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Référence / Auteur</label> <label for="system.reference">Référence / Auteur</label>
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
</div> </div>

View File

@@ -3,7 +3,7 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="xp">Points d'Empoignade </label> <label for="system.pointsemp">Points d'Empoignade </label>
<input class="attribute-value" type="text" name="system.pointsemp" value="{{system.pointsemp}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.pointsemp" value="{{system.pointsemp}}" data-dtype="Number"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}

View File

@@ -7,8 +7,8 @@
<section class="sheet-body"> <section class="sheet-body">
<div class="tab items flexcol" data-group="primary" data-tab="informations"> <div class="tab items flexcol" data-group="primary" data-tab="informations">
<div class="form-group"> <div class="form-group">
<label>Type</label> <label for="system.type">Type</label>
<select name="system.type" id="type" data-dtype="String"> <select name="system.type" data-dtype="String">
{{#select system.type}} {{#select system.type}}
{{{gemmeTypeList}}} {{{gemmeTypeList}}}
{{/select}} {{/select}}

View File

@@ -4,26 +4,26 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Type</label> <label class="item-label" for="system.type">Type</label>
<select name="system.type" data-dtype="String"> <select name="system.type" data-dtype="String">
{{#select system.type}} {{#select system.type}}
<option value="adressehasard">Adresse/Hasard</option> <option value="adressehasard">Adresse/Hasard</option>
<option value="de">Dés</option> <option value="de">Dés</option>
<option value="carte">Cartes</option> <option value="carte">Cartes</option>
<option value="reflexion">Reflexion</option> <option value="reflexion">Reflexion</option>
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Base</label> <label class="item-label" for="system.base">Base</label>
<input class="attribute-value" type="text" name="system.base" value="{{system.base}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.base" value="{{system.base}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Caractéristique/Compétence</label> <label class="item-label" for="system.caraccomp">Caractéristique/Compétence</label>
<input class="attribute-value" type="text" name="system.caraccomp" value="{{system.caraccomp}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.caraccomp" value="{{system.caraccomp}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Référence / Auteur</label> <label for="system.reference">Référence / Auteur</label>
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
</div> </div>

View File

@@ -5,9 +5,9 @@
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1> <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
{{#if options.isOwned}} {{#if options.isOwned}}
<div class="form-group"> <div class="form-group">
<span for="xp"><a class="creer-tache-livre chat-card-button" data-actor-id="{{actorId}}">Créer une tâche de lecture</a></span> <span><a class="creer-tache-livre chat-card-button" data-actor-id="{{actorId}}">Créer une tâche de lecture</a></span>
</div> </div>
{{/if}} {{/if}}
</div> </div>
</header> </header>
<nav class="sheet-tabs tabs" data-group="primary"> <nav class="sheet-tabs tabs" data-group="primary">
@@ -18,35 +18,35 @@
<div class="tab items flexcol" data-group="primary" data-tab="informations"> <div class="tab items flexcol" data-group="primary" data-tab="informations">
<div class="form-group"> <div class="form-group">
<label for="xp">Auteur</label> <label for="system.auteur">Auteur</label>
<input class="attribute-value" type="text" name="system.auteur" value="{{system.auteur}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.auteur" value="{{system.auteur}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Compétence</label> <label for="system.competence">Compétence</label>
<select name="system.competence" id="competenceselect" data-dtype="String"> <select name="system.competence" data-dtype="String">
{{#select system.competence}} {{#select system.competence}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}}
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Difficulté</label> <label for="system.difficulte">Difficulté</label>
<input class="attribute-value" type="number" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/> <input class="attribute-value" type="number" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Points de tâches</label> <label for="system.points_de_tache">Points de tâches</label>
<input class="attribute-value" type="number" name="system.points_de_tache" value="{{system.points_de_tache}}" data-dtype="Number"/> <input class="attribute-value" type="number" name="system.points_de_tache" value="{{system.points_de_tache}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Expérience</label> <label for="system.xp">Expérience</label>
<input class="attribute-value" type="number" name="system.xp" value="{{system.xp}}" data-dtype="Number"/> <input class="attribute-value" type="number" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Niveau minimum</label> <label for="system.niveau_minimum">Niveau minimum</label>
<input class="attribute-value" type="text" name="system.niveau_minimum" value="{{system.niveau_minimum}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.niveau_minimum" value="{{system.niveau_minimum}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Niveau maximum</label> <label for="system.niveau_maximum">Niveau maximum</label>
<input class="attribute-value" type="text" name="system.niveau_maximum" value="{{system.niveau_maximum}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.niveau_maximum" value="{{system.niveau_maximum}}" data-dtype="Number"/>
</div> </div>

View File

@@ -3,53 +3,53 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="xp">Compétence</label> <label for="system.competence">Compétence</label>
<select name="system.competence" id="competenceselect" data-dtype="String"> <select name="system.competence" data-dtype="String">
{{#select system.competence}} {{#select system.competence}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}}
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Thème</label> <label for="system.theme">Thème</label>
<input class="attribute-value" type="text" name="system.theme" value="{{system.theme}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.theme" value="{{system.theme}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Support</label> <label for="system.support">Support</label>
<input class="attribute-value" type="text" name="system.support" value="{{system.support}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.support" value="{{system.support}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Heure</label> <label for="system.heure">Heure</label>
<select name="system.heure" id="heure" data-dtype="String"> <select name="system.heure" data-dtype="String">
{{#select system.heure}} {{#select system.heure}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}}
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Purification</label> <label for="system.purification">Purification</label>
<input class="attribute-value" type="text" name="system.purification" value="{{system.purification}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.purification" value="{{system.purification}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Vêture</label> <label for="system.veture">Vêture</label>
<input class="attribute-value" type="text" name="system.veture" value="{{system.veture}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.veture" value="{{system.veture}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Comportement</label> <label for="system.comportement">Comportement</label>
<input class="attribute-value" type="text" name="system.comportement" value="{{system.comportement}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.comportement" value="{{system.comportement}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Case TMR</label> <label for="system.tmr">Case TMR</label>
<select name="system.tmr" id="tmr" data-dtype="String"> <select name="system.tmr" data-dtype="String">
{{#select system.tmr}} {{#select system.tmr}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html"}}
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Malus</label> <label for="system.malus">Malus</label>
{{#if options.isGM}} {{#if options.isGM}}
<select name="system.malus" id="malus" data-dtype="Number"> <select name="system.malus" data-dtype="Number">
{{#select system.malus}} {{#select system.malus}}
<option value="0">0</option> <option value="0">0</option>
<option value="-1">-1</option> <option value="-1">-1</option>

View File

@@ -3,14 +3,13 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">Niveau</label> <label class="item-label" for="system.niveau">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Référence / Auteur</label> <label for="system.reference">Référence / Auteur</label>
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
</section> </section>
</form> </form>

View File

@@ -3,21 +3,20 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="xp">Nombre</label> <label for="system.value">Nombre</label>
<input class="attribute-value" type="text" name="system.value" value="{{system.value}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.value" value="{{system.value}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Nombre valide ? </label> <label for="system.istrue">Nombre valide ? </label>
<input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/> <input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Index du jour concerné</label> <label for="system.jourindex">Index du jour concerné</label>
<input class="attribute-value" type="text" name="system.jourindex" value="{{system.jourindex}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.jourindex" value="{{system.jourindex}}" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Label du jour</label> <label for="system.jourlabel">Label du jour</label>
<input class="attribute-value" type="text" name="system.jourlabel" value="{{system.jourlabel}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.jourlabel" value="{{system.jourlabel}}" data-dtype="String"/>
</div> </div>
</section> </section>
</form> </form>

View File

@@ -9,27 +9,27 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label>Caractéristique</label> <label for="system.default_carac">Caractéristique</label>
<select name="system.default_carac" id="default_carac" data-dtype="String"> <select name="system.default_carac" data-dtype="String">
{{#select system.default_carac}} {{#select system.default_carac}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-caracteristiques.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-caracteristiques.html"}}
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Compétence</label> <label for="system.competence">Compétence</label>
<select name="system.competence" id="competenceselect" data-dtype="String"> <select name="system.competence" data-dtype="String">
{{#select system.competence}} {{#select system.competence}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}}
{{/select}} {{/select}}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Référence / Auteur</label> <label for="system.reference">Référence / Auteur</label>
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Niveau</label> <label for="system.niveau">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
</div> </div>

View File

@@ -3,15 +3,15 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="xp">Type de possession </label> <label for="system.typepossession">Type de possession</label>
<input class="attribute-value" type="text" name="system.typepossession" value="{{system.typepossession}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.typepossession" value="{{system.typepossession}}" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Possédé ? </label> <label for="system.istrue">Possédé ?</label>
<input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/> <input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="xp">Compteur </label> <label for="system.compteur">Compteur</label>
<input class="attribute-value" type="text" name="system.compteur" value="{{system.compteur}}" data-dtype="Number"/> <input class="attribute-value" type="text" name="system.compteur" value="{{system.compteur}}" data-dtype="Number"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}

View File

@@ -5,7 +5,7 @@
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1> <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
{{#if options.isOwned}} {{#if options.isOwned}}
<div class="form-group"> <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><a class="consommer-potion chat-card-button" data-actor-id="{{actorId}}">Consommer cette potion et appliquer ses effets</a></span>
</div> </div>
{{/if}} {{/if}}
</div> </div>

Some files were not shown because too many files have changed in this diff Show More