Compare commits

...

18 Commits

Author SHA1 Message Date
f220e3a394 Merge pull request 'Version 13.0.37' (#803) from feature/v13-corrections into v13
All checks were successful
Release Creation / build (release) Successful in 1m28s
Reviewed-on: https, #803
2026-05-02 16:37:40 +02:00
1d9348b701 Version 13.0.37 2026-05-02 16:36:51 +02:00
d96dff988e Merge pull request 'isNewerVersion' (#802) from feature/v13-corrections into v13
Reviewed-on: https, #802
2026-05-02 16:35:21 +02:00
9966a33524 Correction Migration avec Foundry14
Accès à méthode isNewerVersion à travers foundry.utils
2026-05-02 16:32:19 +02:00
7fb0ee1659 await ChatMessage.create
ChatMessage.create est async, il faut donc de préférence
l'appeler avec un await.

Des effets secondaires avaient lieu (ordre de messages, updates
ultérieurs parfois pas pris en compte)
2026-05-02 00:42:45 +02:00
d15d0989a3 Remise à zéro du refoulement après souffle 2026-05-01 23:56:17 +02:00
704c99e418 Correction: modification de coeurs 2026-05-01 23:38:05 +02:00
9ccc068333 Amélioration du moral
Les bon moments sont affichés en tooltips sur le moral

Simplification moralIncDec: Utilisation d'un seul update
2026-05-01 23:20:58 +02:00
6b0a6a268e Merge pull request '13.0.36 - Les rêveries d'Illisys' (#801) from feature/v13-corrections into v13
All checks were successful
Release Creation / build (release) Successful in 1m45s
Reviewed-on: https, #801
2026-04-30 18:25:47 +02:00
c7da930556 Boutons dans les listes d'équipement
Affichage amélioré en évitant les retours à la ligne
Meilleur affichage des -/+
2026-04-30 00:05:31 +02:00
e9e2eba9b5 Support v14: commandes dans chatMessage en html 2026-04-29 22:53:23 +02:00
423dcaf53e Cuisiner depuis l'équipement 2026-04-29 22:53:23 +02:00
a01086ff28 Amélioration champs input
- ajout de min et max quand utile
- ordre et regroupement des attributs:
   - préférence pour name en premier
   - regroupement de class/type/data-dtype
   - regroupement value/min/max
2026-04-29 22:53:22 +02:00
76e651cf19 Corrections mineures 2026-04-28 19:21:00 +02:00
eaee50511a Fix v14: attaque à distance 2026-04-28 19:10:38 +02:00
d1832917bc Message de dommage sur entité
Plutôt que de dire "ne subit aucun dommage", une gravité de blessure
indicative est donnée
2026-04-28 19:09:08 +02:00
277799088f Affichage des jeux 2026-04-28 19:07:24 +02:00
0398fbdbd1 Fix: Pas d'affichage de feuille sur encaissement 2026-04-28 19:07:00 +02:00
130 changed files with 883 additions and 748 deletions

View File

@@ -1,5 +1,26 @@
# 13.0 # 13.0
## 13.0.37 - Le bonheur des zyglutes d'Illisys
- Corrections v14
- correction du problème liè à Foundry 14 qui peut empêcher d'utiliser les fenêtres de jets à cause de migrations mal effectuées
- Les bon moments sont affichés en tooltip sur le moral
- Les modifications de coeurs fonctionnent de nouveau
- Le refoulement est remis à zéro après avoir refoulé et reçu un souffle
## 13.0.36 - Les rêveries d'Illisys
- Corrections v14
- les attaques à distance n'empèchent plus la fenêtre d'attaque de s'ouvrir
- les commandes (/help, ...) fonctionnent en v14
- Les feuilles d'acteurs ne s'ouvrent plus lors d'un changement (par exemple en cas d'encaissement)
- Les jeux sont correctement affichés
- Ajout d'une gravité de blessure sur les encaissement d'entités
- Amélioration de champs numériques: ajout de min et max quand c'est utile
- correction pour cuisiner depuis l'équipement
- les boutons dans les listes d'équipement sont mieux affichés sans retour à la ligne
## 13.0.35 - Les travaux d'Illisys ## 13.0.35 - Les travaux d'Illisys
- Correction du recul contre une entité de cauchemar (qui utilise le rêve comme force) - Correction du recul contre une entité de cauchemar (qui utilise le rêve comme force)

View File

@@ -1120,49 +1120,27 @@ body {
text-align: left; text-align: left;
} }
.system-foundryvtt-reve-de-dragon .equipement-nom { .system-foundryvtt-reve-de-dragon .equipement-nom {
flex-grow: 3; flex-grow: 4;
flex-shrink: 2;
margin: 0; margin: 0;
justify-content: center;
text-align: left; text-align: left;
display: ruby; display: ruby;
} }
.system-foundryvtt-reve-de-dragon .equipement-valeur { .system-foundryvtt-reve-de-dragon .equipement-valeur {
margin: 0; margin: 0;
flex-grow: 1.5; flex-grow: 1;
flex-shrink: 1;
text-align: center; text-align: center;
} }
.system-foundryvtt-reve-de-dragon .equipement-detail { .system-foundryvtt-reve-de-dragon .equipement-detail {
margin: 0; margin: 0;
flex-grow: 1; flex-grow: 1;
align-items: center; flex-shrink: 1;
justify-content: center;
text-align: center;
}
.system-foundryvtt-reve-de-dragon span.equipement-detail-buttons {
margin: 0;
flex-grow: 1.5;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
text-align: center; text-align: center;
display: flex; display: flex;
flex-direction: row; min-width: max-content;
}
.system-foundryvtt-reve-de-dragon .equipement-button {
margin: 0;
flex-grow: 0.5;
align-items: center;
justify-content: center;
text-align: center;
}
.system-foundryvtt-reve-de-dragon :is(.item-actions-controls, .equipement-actions) {
margin: 0;
flex-grow: 1.2;
align-items: end;
justify-content: flex-end;
text-align: right;
}
.system-foundryvtt-reve-de-dragon .liste-equipement :is(.equipement-actions, .item-actions-controls) {
flex-grow: 2;
} }
.system-foundryvtt-reve-de-dragon .blessure-control { .system-foundryvtt-reve-de-dragon .blessure-control {
flex-grow: 1; flex-grow: 1;
@@ -1526,9 +1504,20 @@ body {
.system-foundryvtt-reve-de-dragon .competence-list .item-controls.hidden-controls { .system-foundryvtt-reve-de-dragon .competence-list .item-controls.hidden-controls {
display: none !important; display: none !important;
} }
.system-foundryvtt-reve-de-dragon .competence-header .item-actions-controls {
flex-shrink: 2;
flex-grow: 2;
}
.system-foundryvtt-reve-de-dragon .item-actions-controls, .system-foundryvtt-reve-de-dragon .item-actions-controls,
.system-foundryvtt-reve-de-dragon .item-controls { .system-foundryvtt-reve-de-dragon .item-controls {
vertical-align: super; margin: 0;
flex-grow: 1;
flex-shrink: 1;
align-items: end;
text-align: right;
min-width: max-content;
flex-basis: fit-content;
vertical-align: baseline;
} }
.system-foundryvtt-reve-de-dragon .item-actions-controls img, .system-foundryvtt-reve-de-dragon .item-actions-controls img,
.system-foundryvtt-reve-de-dragon .item-controls img { .system-foundryvtt-reve-de-dragon .item-controls img {

View File

@@ -393,49 +393,27 @@
text-align: left; text-align: left;
} }
.equipement-nom { .equipement-nom {
flex-grow: 3; flex-grow: 4;
flex-shrink: 2;
margin: 0; margin: 0;
justify-content: center;
text-align: left; text-align: left;
display: ruby; display: ruby;
} }
.equipement-valeur { .equipement-valeur {
margin: 0; margin: 0;
flex-grow: 1.5; flex-grow: 1;
flex-shrink: 1;
text-align: center; text-align: center;
} }
.equipement-detail { .equipement-detail {
margin: 0; margin: 0;
flex-grow: 1; flex-grow: 1;
align-items: center; flex-shrink: 1;
justify-content: center;
text-align: center;
}
span.equipement-detail-buttons {
margin: 0;
flex-grow: 1.5;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
text-align: center; text-align: center;
display: flex; display: flex;
flex-direction: row; min-width: max-content;
}
.equipement-button {
margin: 0;
flex-grow: 0.5;
align-items: center;
justify-content: center;
text-align: center;
}
:is(.item-actions-controls, .equipement-actions) {
margin: 0;
flex-grow: 1.2;
align-items: end;
justify-content: flex-end;
text-align: right;
}
.liste-equipement :is(.equipement-actions, .item-actions-controls) {
flex-grow: 2;
} }
.blessure-control { .blessure-control {
@@ -848,12 +826,20 @@
.competence-list .item-controls.hidden-controls { .competence-list .item-controls.hidden-controls {
display: none !important; display: none !important;
} }
.competence-header .item-actions-controls{
flex-shrink: 2;
flex-grow: 2;
}
.item-actions-controls, .item-actions-controls,
.item-controls { .item-controls {
vertical-align: super; margin: 0;
// a { flex-grow: 1;
// } flex-shrink: 1;
align-items: end;
text-align: right;
min-width: max-content;
flex-basis: fit-content;
vertical-align: baseline;
img { img {
vertical-align: text-bottom; vertical-align: text-bottom;
display: inline; display: inline;

View File

@@ -256,7 +256,7 @@ export class RdDActor extends RdDBaseActorSang {
console.log('perte de rêve des enchantements', toUpdate) console.log('perte de rêve des enchantements', toUpdate)
const messageUpdates = await Promise.all( const messageUpdates = await Promise.all(
toUpdate.map(async it => await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-pertereve-enchantement-chateaudormant.hbs`, it))) toUpdate.map(async it => await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-pertereve-enchantement-chateaudormant.hbs`, it)))
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: messageUpdates.reduce(Misc.joining('<br>')) content: messageUpdates.reduce(Misc.joining('<br>'))
}) })
@@ -322,8 +322,7 @@ export class RdDActor extends RdDBaseActorSang {
await this.setBonusPotionSoin(0); await this.setBonusPotionSoin(0);
} }
await this.resetInfoSommeil() await this.resetInfoSommeil()
ChatMessage.create(message); await ChatMessage.create(message)
setTimeout(() => this.sheet.render(), 20)
} }
async _recuperationSante(message) { async _recuperationSante(message) {
@@ -364,7 +363,7 @@ export class RdDActor extends RdDBaseActorSang {
const message = { const message = {
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: "" content: ""
}; }
await this._recuperationSante(message) await this._recuperationSante(message)
await this._recupereMoralChateauDormant(message) await this._recupereMoralChateauDormant(message)
@@ -375,12 +374,12 @@ export class RdDActor extends RdDBaseActorSang {
await this.retourSust(message) await this.retourSust(message)
await this.$perteReveEnchantementsChateauDormants() await this.$perteReveEnchantementsChateauDormants()
await this.$suppressionLancementsSort() await this.$suppressionLancementsSort()
await RdDCoeur.applyCoeurChateauDormant(this, message); await RdDCoeur.applyCoeurChateauDormant(this, message)
if (message.content != "") { if (message.content != "") {
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`; message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`
ChatMessage.create(message); await ChatMessage.create(message)
} }
await this.resetInfoSommeil(); await this.resetInfoSommeil()
} }
async resetInfoSommeil() { async resetInfoSommeil() {
@@ -536,37 +535,36 @@ export class RdDActor extends RdDBaseActorSang {
} }
if (!options.grisReve) { if (!options.grisReve) {
ChatMessage.create(message); await ChatMessage.create(message)
} }
if (options.chateauDormant) { if (options.chateauDormant) {
await this.$dormirChateauDormant(); await this.$dormirChateauDormant()
} }
setTimeout(() => this.sheet.render(), 20)
} }
async reveilReveDeDragon(message, heures) { async reveilReveDeDragon(message, heures) {
const restant = Math.max(this.system.sommeil?.heures - heures, 0) const restant = Math.max(this.system.sommeil?.heures - heures, 0)
if (restant > 0) { if (restant > 0) {
await this.update({ 'system.sommeil': { heures: restant } }); await this.update({ 'system.sommeil': { heures: restant } })
} }
} }
async $dormirDesHeures(message, heures, options) { async $dormirDesHeures(message, heures, options) {
const dormi = { heures: 0, etat: 'dort', jetsReve: [] }; const dormi = { heures: 0, etat: 'dort', jetsReve: [] };
for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) { for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) {
await this.$recupererEthylisme(message); await this.$recupererEthylisme(message)
if (options.grisReve) { if (options.grisReve) {
await this.$recupererFatigue(message); await this.$recupererFatigue(message)
} }
else if (!this.system.sommeil?.insomnie) { else if (!this.system.sommeil?.insomnie) {
await this.$recupererFatigue(message); await this.$recupererFatigue(message)
await this.$jetRecuperationReve(dormi, message); await this.$jetRecuperationReve(dormi, message)
if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) { if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) {
await this.$jetRecuperationReve(dormi, message); await this.$jetRecuperationReve(dormi, message)
} }
} }
} }
return dormi; return dormi
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -583,7 +581,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
else { else {
if (!ReglesOptionnelles.isUsing("recuperation-reve")) { if (!ReglesOptionnelles.isUsing("recuperation-reve")) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: `Pas de récupération de rêve (${reve} points ignorés)` content: `Pas de récupération de rêve (${reve} points ignorés)`
}) })
@@ -891,7 +889,7 @@ export class RdDActor extends RdDBaseActorSang {
await competence.update({ 'system.xp': toXp }) await competence.update({ 'system.xp': toXp })
await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name, true) await ExperienceLog.add(this, XP_TOPIC.XP, fromXp, toXp, competence.name, true)
if (toXp > fromXp) { if (toXp > fromXp) {
RdDUtility.checkThanatosXP(competence) await RdDUtility.checkThanatosXP(competence)
} }
} }
} }
@@ -907,7 +905,7 @@ export class RdDActor extends RdDBaseActorSang {
await competence.update({ 'system.xp_sort': toXpSort }) await competence.update({ 'system.xp_sort': toXpSort })
await ExperienceLog.add(this, XP_TOPIC.XPSORT, fromXpSort, toXpSort, competence.name, true) await ExperienceLog.add(this, XP_TOPIC.XPSORT, fromXpSort, toXpSort, competence.name, true)
if (toXpSort > fromXpSort) { if (toXpSort > fromXpSort) {
RdDUtility.checkThanatosXP(competence) await RdDUtility.checkThanatosXP(competence)
} }
} }
} }
@@ -972,7 +970,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async actionRefoulement(item) { async actionRefoulement(item) {
const refoulement = item?.system.refoulement ?? 0; const refoulement = item?.system.refoulement ?? 0
if (refoulement > 0) { if (refoulement > 0) {
RdDConfirm.confirmer({ RdDConfirm.confirmer({
settingConfirmer: "confirmation-refouler", settingConfirmer: "confirmation-refouler",
@@ -980,8 +978,8 @@ export class RdDActor extends RdDBaseActorSang {
title: 'Confirmer la refoulement', title: 'Confirmer la refoulement',
buttonLabel: 'Refouler', buttonLabel: 'Refouler',
onAction: async () => { onAction: async () => {
await this.ajouterRefoulement(refoulement, `une queue ${item.name}`); await this.ajouterRefoulement(refoulement, `une queue ${item.name}`)
await item.delete(); await item.delete()
} }
}); });
} }
@@ -989,16 +987,18 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async ajouterRefoulement(value = 1, refouler) { async ajouterRefoulement(value = 1, refouler) {
let refoulement = this.system.reve.refoulement.value + value const refoulement = this.system.reve.refoulement.value + value
const roll = new Roll("1d20") const roll = new Roll("1d20")
await roll.evaluate() await roll.evaluate()
await roll.toMessage({ flavor: `${this.name} refoule ${refouler} pour ${value} points de refoulement (total: ${refoulement})` }) await roll.toMessage({ flavor: `${this.name} refoule ${refouler} pour ${value} points de refoulement (total: ${refoulement})` })
if (roll.total <= refoulement) { if (roll.total <= refoulement) {
refoulement = 0 await this.update({ "system.reve.refoulement.value": 0 })
await this.ajouterSouffle({ chat: true }) await this.ajouterSouffle({ chat: true })
} }
await this.update({ "system.reve.refoulement.value": refoulement }) else {
return roll; await this.update({ "system.reve.refoulement.value": refoulement })
}
return roll
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -1007,7 +1007,7 @@ export class RdDActor extends RdDBaseActorSang {
//souffle.id = undefined; //TBC //souffle.id = undefined; //TBC
await this.createEmbeddedDocuments('Item', [souffle]) await this.createEmbeddedDocuments('Item', [souffle])
if (options.chat) { if (options.chat) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: this.name + " subit un Souffle de Dragon : " + souffle.name content: this.name + " subit un Souffle de Dragon : " + souffle.name
}) })
@@ -1017,22 +1017,19 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async ajouterQueue(options = { chat: false }) { async ajouterQueue(options = { chat: false }) {
let queue; const thanatos = this.system.reve.reve.thanatosused;
if (this.system.reve.reve.thanatosused) { const queue = (thanatos ? await RdDRollTables.getOmbre() : await RdDRollTables.getQueue())
queue = await RdDRollTables.getOmbre(); if (thanatos) {
await this.update({ "system.reve.reve.thanatosused": false }) await this.update({ "system.reve.reve.thanatosused": false })
} }
else { await this.createEmbeddedDocuments('Item', [queue])
queue = await RdDRollTables.getQueue();
}
await this.createEmbeddedDocuments('Item', [queue]);
if (options.chat) { if (options.chat) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: this.name + " subit une Queue de Dragon : " + queue.name content: this.name + " subit une Queue de Dragon : " + queue.name
}) })
} }
return queue; return queue
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -1096,14 +1093,14 @@ export class RdDActor extends RdDBaseActorSang {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async reinsertionAleatoire(raison, accessible = tmr => true) { async reinsertionAleatoire(raison, accessible = tmr => true) {
const innaccessible = this.buildTMRInnaccessible(); const innaccessible = this.buildTMRInnaccessible()
let tmr = await TMRUtility.getTMRAleatoire(tmr => accessible(tmr) && !innaccessible.includes(tmr.coord)); let tmr = await TMRUtility.getTMRAleatoire(tmr => accessible(tmr) && !innaccessible.includes(tmr.coord))
ChatMessage.create({ await ChatMessage.create({
content: `${raison} : ré-insertion aléatoire.`, content: `${raison} : ré-insertion aléatoire.`,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); })
await this.forcerPositionTMRInconnue(tmr); await this.forcerPositionTMRInconnue(tmr)
return tmr; return tmr
} }
async forcerPositionTMRInconnue(tmr) { async forcerPositionTMRInconnue(tmr) {
@@ -1167,14 +1164,14 @@ export class RdDActor extends RdDBaseActorSang {
async jetEndurance(resteEndurance = undefined) { async jetEndurance(resteEndurance = undefined) {
const result = super.jetEndurance(resteEndurance); const result = super.jetEndurance(resteEndurance);
if (result.jetEndurance == 1) { if (result.jetEndurance == 1) {
ChatMessage.create({ content: await this._gainXpConstitutionJetEndurance() }); await ChatMessage.create({ content: await this._gainXpConstitutionJetEndurance() })
} }
return result; return result;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getSConst() { return RdDCarac.calculSConst(this.getConstitution()) } getSConst() { return RdDCarac.calculSConst(this.getConstitution()) }
async _gainXpConstitutionJetEndurance() { async _gainXpConstitutionJetEndurance() {
await this.updateCaracXP('constitution', Misc.toInt(this.system.carac.constitution.xp) + 1) await this.updateCaracXP('constitution', Misc.toInt(this.system.carac.constitution.xp) + 1)
return `${this.name} a obtenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement.`; return `${this.name} a obtenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement.`;
@@ -1188,7 +1185,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
const jetMoral = await this._jetDeMoral(situation, bonmoment) const jetMoral = await this._jetDeMoral(situation, bonmoment)
const finMessage = (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral"); const finMessage = (jetMoral.ajustement == 0 ? "Vous gardez votre moral" : jetMoral.ajustement > 0 ? "Vous gagnez du moral" : "Vous perdez du moral");
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${SITUATION_MORAL[situation] ?? situation} (${jetMoral.jet}/${jetMoral.difficulte}).` content: `${finMessage} - jet ${jetMoral.succes ? "réussi" : "manqué"} en situation ${SITUATION_MORAL[situation] ?? situation} (${jetMoral.jet}/${jetMoral.difficulte}).`
}) })
@@ -1214,22 +1211,22 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async moralIncDec(ajustement, bonmoment = "") { async moralIncDec(ajustement, bonmoment = "") {
let moral = parseInt(this.system.compteurs.moral.value) const moral = parseInt(this.system.compteurs.moral.value);
if (ajustement != 0) { if (ajustement != 0) {
if (ajustement > 0 && bonmoment != "" && bonmoment != undefined) {
await this.update({ 'system.compteurs.bonmoments': [...this.system.compteurs.bonmoments, bonmoment] })
}
const moralTheorique = moral + ajustement const moralTheorique = moral + ajustement
if (moralTheorique > 3) { // exaltation const newExaltation = parseInt(this.system.compteurs.exaltation.value) + Math.max(0, moralTheorique - 3)
const exaltation = parseInt(this.system.compteurs.exaltation.value) + moralTheorique - 3 const newDissolution = parseInt(this.system.compteurs.dissolution.value) + Math.max(0, - moralTheorique - 3)
await this.update({ 'system.compteurs.exaltation.value': exaltation }) const newMoral = Math.max(-3, Math.min(moralTheorique, 3))
const moralUpdates = {
'system.compteurs.exaltation.value': newExaltation,
'system.compteurs.dissolution.value': newDissolution,
'system.compteurs.moral.value': newMoral
} }
if (moralTheorique < -3) { // dissolution if (ajustement > 0 && bonmoment != "" && bonmoment != undefined && !this.system.compteurs.bonmoments.includes(bonmoment)) {
const dissolution = parseInt(this.system.compteurs.dissolution.value) - 3 - moralTheorique moralUpdates['system.compteurs.bonmoments'] = [...this.system.compteurs.bonmoments, bonmoment]
await this.update({ 'system.compteurs.dissolution.value': dissolution })
} }
moral = Math.max(-3, Math.min(moralTheorique, 3)); await this.update(moralUpdates)
await this.update({ 'system.compteurs.moral.value': moral }) return newMoral
} }
return moral return moral
} }
@@ -1492,7 +1489,7 @@ export class RdDActor extends RdDBaseActorSang {
exaltation: exaltation exaltation: exaltation
}; };
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-transformer-stress.hbs`, stressRollData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-transformer-stress.hbs`, stressRollData)
}); });
@@ -1559,7 +1556,7 @@ export class RdDActor extends RdDBaseActorSang {
xp: carac.xp xp: carac.xp
} }
if (display) { if (display) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.hbs`, checkXp) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.hbs`, checkXp)
}); });
@@ -1571,7 +1568,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async checkCompetenceXP(compName, newXP, display = true) { async checkCompetenceXP(compName, newXP, display = true) {
return this.getCompetence(compName)?.checkCompetenceXP( newXP, display) return this.getCompetence(compName)?.checkCompetenceXP(newXP, display)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -1594,7 +1591,7 @@ export class RdDActor extends RdDBaseActorSang {
ChatUtility.blindMessageToGM({ content: content }) ChatUtility.blindMessageToGM({ content: content })
} }
else { else {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: content content: content
}); });
@@ -1698,22 +1695,22 @@ export class RdDActor extends RdDBaseActorSang {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
isMauvaiseRencontre() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective' async isMauvaiseRencontre() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
let addMsg = ""; let addMsg = ""
let rencSpecial = EffetsDraconiques.mauvaiseRencontre(this); let rencSpecial = EffetsDraconiques.mauvaiseRencontre(this)
if (rencSpecial) { if (rencSpecial) {
if (rencSpecial.type != 'souffle') { if (rencSpecial.type != 'souffle') {
this.deleteEmbeddedDocuments('Item', [rencSpecial.id]); // Suppression dans la liste des queues await this.deleteEmbeddedDocuments('Item', [rencSpecial.id]) // Suppression dans la liste des queues
addMsg = " La queue a été supprimée de votre fiche automatiquement"; addMsg = " La queue a été supprimée de votre fiche automatiquement"
} else { } else {
addMsg = " Vous devez gérer manuellement le décompte de mauvaises rencontres."; addMsg = " Vous devez gérer manuellement le décompte de mauvaises rencontres."
} }
ChatMessage.create({ await ChatMessage.create({
content: "Vous êtes sous le coup d'une Mauvaise Rencontre en Persective." + addMsg, content: "Vous êtes sous le coup d'une Mauvaise Rencontre en Persective." + addMsg,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); })
} }
return rencSpecial; return rencSpecial
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -1723,7 +1720,7 @@ export class RdDActor extends RdDBaseActorSang {
ChatMessage.create({ ChatMessage.create({
content: `Vous êtes sous le coup d'Inertie Draconique : vous perdrez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`, content: `Vous êtes sous le coup d'Inertie Draconique : vous perdrez ${countInertieDraconique + 1} cases de Fatigue par déplacement au lieu d'une.`,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); })
} }
return countInertieDraconique + 1; return countInertieDraconique + 1;
} }
@@ -1731,11 +1728,11 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async checkSoufflePeage(tmr) { async checkSoufflePeage(tmr) {
if ((tmr.type == 'pont' || tmr.type == 'cite') && EffetsDraconiques.isPeage(this)) { if ((tmr.type == 'pont' || tmr.type == 'cite') && EffetsDraconiques.isPeage(this)) {
await this.reveActuelIncDec(-1); await this.reveActuelIncDec(-1)
ChatMessage.create({ await ChatMessage.create({
content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).", content: "Vous êtes sous le coup d'un Péage : l'entrée sur cette case vous a coûté 1 Point de Rêve (déduit automatiquement).",
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); })
} }
} }
@@ -1761,7 +1758,7 @@ export class RdDActor extends RdDBaseActorSang {
} }
if (reveActuel > rollData.depenseReve) { if (reveActuel > rollData.depenseReve) {
// Incrémenter/gére le bonus de case // Incrémenter/gére le bonus de case
RdDItemSort.incrementBonusCase(this, selectedSort, rollData.tmr.coord) await RdDItemSort.incrementBonusCase(this, selectedSort, rollData.tmr.coord)
if (rollData.isSortReserve) { if (rollData.isSortReserve) {
await this.sortMisEnReserve(selectedSort, rollData.competence, rollData.tmr.coord, Number(selectedSort.system.ptreve_reel)) await this.sortMisEnReserve(selectedSort, rollData.competence, rollData.tmr.coord, Number(selectedSort.system.ptreve_reel))
@@ -1794,7 +1791,7 @@ export class RdDActor extends RdDBaseActorSang {
await RdDRollResult.displayRollData(rollData, this, 'chat-resultat-sort.hbs') await RdDRollResult.displayRollData(rollData, this, 'chat-resultat-sort.hbs')
if (reveActuel == 0) { // 0 points de reve if (reveActuel == 0) { // 0 points de reve
ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" }) await ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" })
} }
if (!rollData.isSortReserve || !rolled.isSuccess) { if (!rollData.isSortReserve || !rolled.isSuccess) {
this.tmrApp?.close() this.tmrApp?.close()
@@ -2157,7 +2154,7 @@ export class RdDActor extends RdDBaseActorSang {
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) { async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
let destinee = this.system.compteurs.destinee?.value ?? 0; let destinee = this.system.compteurs.destinee?.value ?? 0;
if (destinee > 0) { if (destinee > 0) {
ChatMessage.create({ content: `<span class="rdd-roll-part">${this.name} a fait appel à la Destinée !</span>` }); await ChatMessage.create({ content: `<span class="rdd-roll-part">${this.name} a fait appel à la Destinée !</span>` });
await this.update({ 'system.compteurs.destinee.value ': destinee - 1 }) await this.update({ 'system.compteurs.destinee.value ': destinee - 1 })
onSuccess() onSuccess()
} }
@@ -2192,10 +2189,10 @@ export class RdDActor extends RdDBaseActorSang {
} }
if (this.checkDesirLancinant()) { if (this.checkDesirLancinant()) {
// Cas de désir lancinant, pas d'expérience sur particulière // Cas de désir lancinant, pas d'expérience sur particulière
ChatMessage.create({ await ChatMessage.create({
content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`, content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); })
return [] return []
} }
@@ -2323,15 +2320,15 @@ export class RdDActor extends RdDBaseActorSang {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
countMonteeLaborieuse() { // Return +1 par queue/ombre/souffle Montée Laborieuse présente async countMonteeLaborieuse() { // Return +1 par queue/ombre/souffle Montée Laborieuse présente
let countMonteeLaborieuse = EffetsDraconiques.countMonteeLaborieuse(this); let countMonteeLaborieuse = EffetsDraconiques.countMonteeLaborieuse(this);
if (countMonteeLaborieuse > 0) { if (countMonteeLaborieuse > 0) {
ChatMessage.create({ await ChatMessage.create({
content: `Vous êtes sous le coup d'une Montée Laborieuse : vos montées en TMR coûtent ${countMonteeLaborieuse} Point de Rêve de plus.`, content: `Vous êtes sous le coup d'une Montée Laborieuse : vos montées en TMR coûtent ${countMonteeLaborieuse} Point de Rêve de plus.`,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); });
} }
return countMonteeLaborieuse; return countMonteeLaborieuse
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -2374,9 +2371,9 @@ export class RdDActor extends RdDBaseActorSang {
async _doDisplayTMR(mode) { async _doDisplayTMR(mode) {
let isRapide = mode == "rapide"; let isRapide = mode == "rapide";
if (mode != "visu") { if (mode != "visu") {
let minReveValue = (isRapide && !EffetsDraconiques.isDeplacementAccelere(this) ? 3 : 2) + this.countMonteeLaborieuse(); let minReveValue = (isRapide && !EffetsDraconiques.isDeplacementAccelere(this) ? 3 : 2) + (await this.countMonteeLaborieuse())
if (this.getReveActuel() < minReveValue) { if (this.getReveActuel() < minReveValue) {
ChatMessage.create({ await ChatMessage.create({
content: `Vous n'avez les ${minReveValue} Points de Reve nécessaires pour monter dans les Terres Médianes`, content: `Vous n'avez les ${minReveValue} Points de Reve nécessaires pour monter dans les Terres Médianes`,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}); });
@@ -2418,15 +2415,16 @@ export class RdDActor extends RdDBaseActorSang {
if (!viewOnly) { if (!viewOnly) {
await this.supprimerSignesDraconiques(it => it.system.ephemere && it.system.duree == '1 round', { render: false }) await this.supprimerSignesDraconiques(it => it.system.ephemere && it.system.duree == '1 round', { render: false })
await this.setEffect(STATUSES.StatusDemiReve, false) await this.setEffect(STATUSES.StatusDemiReve, false)
ChatUtility.tellToUserAndGM(message) await ChatUtility.tellToUserAndGM(message)
} }
} }
} }
async supprimerSignesDraconiques(filter = it => true, options = { render: true }) { async supprimerSignesDraconiques(filter = it => true, options = { render: true }) {
const signes = this.itemTypes[ITEM_TYPES.signedraconique].filter(filter) const ids = this.itemTypes[ITEM_TYPES.signedraconique].filter(filter)
if (signes.length > 0) { .map(it => it.id)
this.deleteEmbeddedDocuments("Item", signes.map(item => item.id), options) if (ids.length > 0) {
await this.deleteEmbeddedDocuments("Item", ids, options)
} }
} }
@@ -2464,9 +2462,9 @@ export class RdDActor extends RdDBaseActorSang {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
verifierForceMin(item) { async verifierForceMin(item) {
if (item.type == 'arme' && item.system.force > parseInt(this.system.carac.force.value)) { if (item.type == 'arme' && item.system.force > parseInt(this.system.carac.force.value)) {
ChatMessage.create({ await ChatMessage.create({
content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong> content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong>
(${item.system.force} nécessaire pour une Force de ${this.system.carac.force.value})` (${item.system.force} nécessaire pour une Force de ${this.system.carac.force.value})`
}); });
@@ -2480,7 +2478,7 @@ export class RdDActor extends RdDBaseActorSang {
await item.update({ "system.equipe": isEquipe }) await item.update({ "system.equipe": isEquipe })
this.computeEncTotal() this.computeEncTotal()
if (isEquipe) if (isEquipe)
this.verifierForceMin(item) await this.verifierForceMin(item)
} }
} }
@@ -2742,25 +2740,25 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async consommerPotionSoin(potion) { async consommerPotionSoin(potion) {
potion.alias = this.name; potion.alias = this.name
potion.supprimer = true; potion.supprimer = true
if (potion.system.magique) { if (potion.system.magique) {
// Gestion de la résistance: // Gestion de la résistance:
potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8); potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8)
if (potion.rolled.isEchec) { if (potion.rolled.isEchec) {
await this.reveActuelIncDec(-1); await this.reveActuelIncDec(-1);
potion.guerisonData = await this.buildPotionGuerisonList(potion.system.puissance); potion.guerisonData = await this.buildPotionGuerisonList(potion.system.puissance)
potion.guerisonMinutes = potion.guerisonData.pointsConsommes * 5; potion.guerisonMinutes = potion.guerisonData.pointsConsommes * 5
} }
} }
if (!potion.system.magique || potion.rolled.isSuccess) { if (!potion.system.magique || potion.rolled.isSuccess) {
await this.setBonusPotionSoin(potion.system.herbebonus); await this.setBonusPotionSoin(potion.system.herbebonus)
} }
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.hbs`, potion) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.hbs`, potion)
}); })
} }
async setBonusPotionSoin(bonus) { async setBonusPotionSoin(bonus) {
@@ -2794,10 +2792,10 @@ export class RdDActor extends RdDBaseActorSang {
if (!potion.system.magique || potion.rolled.isSuccess) { if (!potion.system.magique || potion.rolled.isSuccess) {
this.bonusRepos = potion.system.herbebonus; this.bonusRepos = potion.system.herbebonus;
} }
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.hbs`, potion) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.hbs`, potion)
}); })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -2819,7 +2817,7 @@ export class RdDActor extends RdDBaseActorSang {
await this.createEmbeddedDocuments('Item', [newPotion]) await this.createEmbeddedDocuments('Item', [newPotion])
await this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins) await this.diminuerQuantiteObjet(herbeData._id, herbeData.nbBrins)
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.hbs`, { content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.hbs`, {
alias: this.getAlias(), alias: this.getAlias(),
@@ -2837,19 +2835,19 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async consommerPotionGenerique(potion) { async consommerPotionGenerique(potion) {
potion.alias = this.name; potion.alias = this.name
if (potion.system.magique) { if (potion.system.magique) {
// Gestion de la résistance: // Gestion de la résistance:
potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8); potion.rolled = await RdDResolutionTable.roll(this.getReveActuel(), -8);
if (potion.rolled.isEchec) { if (potion.rolled.isEchec) {
await this.reveActuelIncDec(-1); await this.reveActuelIncDec(-1)
} }
} }
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.hbs`, potion) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-generique.hbs`, potion)
}); })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -2912,7 +2910,7 @@ export class RdDActor extends RdDBaseActorSang {
let draconique = Draconique.all().find(it => it.match(item)); let draconique = Draconique.all().find(it => it.match(item));
if (draconique) { if (draconique) {
await draconique.onActorCreateOwned(this, item) await draconique.onActorCreateOwned(this, item)
this.notifyGestionTeteSouffleQueue(item, draconique.manualMessage()); await this.notifyGestionTeteSouffleQueue(item, draconique.manualMessage());
} }
await this.setInfoSommeilInsomnie(); await this.setInfoSommeilInsomnie();
} }
@@ -2968,8 +2966,8 @@ export class RdDActor extends RdDBaseActorSang {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
notifyGestionTeteSouffleQueue(item, manualMessage = true) { async notifyGestionTeteSouffleQueue(item, manualMessage = true) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré(e) automatiquement. ${manualMessage ? manualMessage : ''}` content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré(e) automatiquement. ${manualMessage ? manualMessage : ''}`
}); });

View File

@@ -169,10 +169,11 @@ export class RdDBaseActorReve extends RdDBaseActor {
} }
async finDeRoundSuppressionEffetsTermines(options) { async finDeRoundSuppressionEffetsTermines(options) {
for (let effect of this.getEffects()) { const effects = this.getEffects();
for (let effect of effects) {
if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) { if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) {
await effect.delete(); await effect.delete()
ChatMessage.create({ content: `${this.getAlias()} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` }); await ChatMessage.create({ content: `${this.getAlias()} n'est plus ${Misc.lowerFirst(game.i18n.localize(effect.system.label))} !` })
} }
} }
} }
@@ -615,7 +616,7 @@ export class RdDBaseActorReve extends RdDBaseActor {
RdDPossessionV2.rollAttaquePossession(this) RdDPossessionV2.rollAttaquePossession(this)
} }
verifierForceMin(item) { } async verifierForceMin(item) { }
/* -------------------------------------------- */ /* -------------------------------------------- */
async encaisser() { await RdDEncaisser.encaisser(this) } async encaisser() { await RdDEncaisser.encaisser(this) }
@@ -675,10 +676,10 @@ export class RdDBaseActorReve extends RdDBaseActor {
if (!encaissement.hasPlayerOwner && encaissement.endurance != 0) { if (!encaissement.hasPlayerOwner && encaissement.endurance != 0) {
encaissement = foundry.utils.duplicate(encaissement) encaissement = foundry.utils.duplicate(encaissement)
encaissement.isGM = true encaissement.isGM = true
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getGMs(), whisper: ChatUtility.getGMs(),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-encaissement.hbs', encaissement) content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-encaissement.hbs', encaissement)
}); })
} }
} }

View File

@@ -36,7 +36,7 @@ export class RdDBaseActorSangSheet extends RdDBaseActorReveSheet {
async jetEndurance() { async jetEndurance() {
const endurance = this.actor.getEnduranceActuelle() const endurance = this.actor.getEnduranceActuelle()
const result = await this.actor.jetEndurance(endurance); const result = await this.actor.jetEndurance(endurance);
ChatMessage.create({ await ChatMessage.create({
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance} content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`, <br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
whisper: ChatUtility.getOwners(this.actor) whisper: ChatUtility.getOwners(this.actor)

View File

@@ -351,11 +351,10 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
/* -------------------------------------------- */ /* -------------------------------------------- */
async jetDeVie() { async jetDeVie() {
if (this.isDead()) { if (this.isDead()) {
ChatMessage.create({ return await ChatMessage.create({
content: `Jet de Vie: ${this.getAlias()} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`, content: `Jet de Vie: ${this.getAlias()} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}) })
return
} }
const jetDeVie = await RdDDice.roll("1d20"); const jetDeVie = await RdDDice.roll("1d20");
const sConst = this.getSConst(); const sConst = this.getSConst();
@@ -380,7 +379,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
else if (prochainJet > 0) { else if (prochainJet > 0) {
msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}` msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}`
} }
ChatMessage.create({ return await ChatMessage.create({
content: msgText, content: msgText,
whisper: ChatUtility.getOwners(this) whisper: ChatUtility.getOwners(this)
}) })

View File

@@ -240,7 +240,7 @@ export class RdDBaseActor extends Actor {
renderAfterDelay(currentCounter) { renderAfterDelay(currentCounter) {
setTimeout(async () => { setTimeout(async () => {
if (currentCounter == this.refreshDelayCounter) { if (currentCounter == this.refreshDelayCounter) {
this.sheet?.render(true) this.sheet?.render()
this.refreshDelayCounter = 0 this.refreshDelayCounter = 0
} }
else { else {
@@ -450,7 +450,7 @@ export class RdDBaseActor extends Actor {
msg = "Vous n'avez pas assez d'argent pour payer cette somme !"; msg = "Vous n'avez pas assez d'argent pour payer cette somme !";
} }
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: msg content: msg
}) })
@@ -494,7 +494,7 @@ export class RdDBaseActor extends Actor {
await Monnaie.optimiserFortune(this, sols + this.getFortune()); await Monnaie.optimiserFortune(this, sols + this.getFortune());
RdDAudio.PlayContextAudio("argent"); // Petit son RdDAudio.PlayContextAudio("argent"); // Petit son
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
content: `Vous avez reçu <strong>${sols} Sols</strong> ${fromActor ? " de " + fromActor.name : ''}, qui ont été ajoutés à votre argent.` content: `Vous avez reçu <strong>${sols} Sols</strong> ${fromActor ? " de " + fromActor.name : ''}, qui ont été ajoutés à votre argent.`
}) })
@@ -548,7 +548,7 @@ export class RdDBaseActor extends Actor {
} }
const chatAchatItem = foundry.utils.duplicate(achat.vente); const chatAchatItem = foundry.utils.duplicate(achat.vente);
chatAchatItem.quantiteTotal = quantite; chatAchatItem.quantiteTotal = quantite;
ChatMessage.create({ await ChatMessage.create({
user: achat.userId, user: achat.userId,
speaker: { alias: (acheteur ?? vendeur).getAlias() }, speaker: { alias: (acheteur ?? vendeur).getAlias() },
whisper: ChatUtility.getOwners(this), whisper: ChatUtility.getOwners(this),
@@ -893,7 +893,7 @@ export class RdDBaseActor extends Actor {
system: { description: this.system.description } system: { description: this.system.description }
} }
renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData) renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData)
.then(html => ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride))); .then(async html => await ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride)));
} }
actionImpossible(action) { actionImpossible(action) {

View File

@@ -83,6 +83,7 @@ export class RdDEntite extends RdDBaseActorReve {
if (this.isEntiteNonIncarnee()) { if (this.isEntiteNonIncarnee()) {
return return
} }
encaissement.isEntiteIncarnee = true
const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance); const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance);
foundry.utils.mergeObject(encaissement, { resteEndurance: perteEndurance.newValue, endurance: perteEndurance.perte }) foundry.utils.mergeObject(encaissement, { resteEndurance: perteEndurance.newValue, endurance: perteEndurance.perte })
} }

View File

@@ -16,7 +16,7 @@ export class RdDTextEditor {
$(html).on("click", '.roll-text', async event => await RdDTextEditor.rollText(event)) $(html).on("click", '.roll-text', async event => await RdDTextEditor.rollText(event))
} }
static async enrichHTML(text, object, options = {showlink:true}) { static async enrichHTML(text, object, options = { showlink: true }) {
const context = { const context = {
text, text,
object, object,
@@ -70,9 +70,7 @@ export class RdDTextEditor {
options: { showLink: false } options: { showLink: false }
}, },
param) param)
ChatMessage.create({ await ChatMessage.create({ content: text })
content: text
})
} }
} }
} }

View File

@@ -116,20 +116,20 @@ export class ChatUtility {
return messageData return messageData
} }
static tellToUser(message) { static async tellToUser(message) {
ChatMessage.create({ content: message, user: game.user.id, whisper: [game.user.id] }); await ChatMessage.create({ content: message, user: game.user.id, whisper: [game.user.id] });
} }
static tellToGM(message) { static async tellToGM(message) {
ChatMessage.create({ await ChatMessage.create({
user: game.user.id, user: game.user.id,
content: message, content: message,
whisper: ChatUtility.getGMs() whisper: ChatUtility.getGMs()
}); })
} }
static tellToUserAndGM(message) { static async tellToUserAndGM(message) {
ChatMessage.create({ await ChatMessage.create({
user: game.user.id, user: game.user.id,
content: message, content: message,
whisper: ChatUtility.getUserAndGMs() whisper: ChatUtility.getUserAndGMs()

View File

@@ -71,28 +71,32 @@ export class RdDCoeur {
} }
static async applyCoeurChateauDormant(actor, message) { static async applyCoeurChateauDormant(actor, message) {
const newSuivants = foundry.utils.duplicate(actor.system.subacteurs.suivants)
let count = 0 let count = 0
newSuivants.forEach(async link => { let ajustMoral = 0
const suivant = game.actors.get(link.id) const newSuivants = actor.system.subacteurs.suivants.filter(link => game.actors.get(link.id) != undefined)
const prochainCoeur = link.prochainCoeur ?? 0; .map(link => {
const coeurCourant = link.coeur ?? 0; const suivant = game.actors.get(link.id)
const diff = prochainCoeur - coeurCourant const prochainCoeur = link.prochainCoeur ?? 0
if (diff < 0) { const coeurCourant = link.coeur ?? 0
await actor.moralIncDec(-4); const diff = prochainCoeur - coeurCourant
link.coeur = Math.max(0, coeurCourant - 1) if (diff < 0) {
link.prochainCoeur = link.coeur ajustMoral -= 4
message.content += `<br>Votre c&oelig;ur brisé pour ${suivant.name} vous fait perdre 4 points de moral, il vous reste ${link.coeur} points de C&oelig;ur.` link.coeur = Math.max(0, coeurCourant - 1)
count++ link.prochainCoeur = link.coeur
} message.content += `<br>Votre c&oelig;ur brisé pour ${suivant.name} vous fait perdre 4 points de moral, il vous reste ${link.coeur} points de C&oelig;ur.`
else if (diff > 0) { count++
link.coeur = Math.min(prochainCoeur, 4) }
message.content += `<br>Votre c&oelig;ur bat fort, vous avez maintenant ${link.coeur} points de C&oelig;ur pour ${suivant.name}.` if (diff > 0) {
link.prochainCoeur = link.coeur link.coeur = Math.min(prochainCoeur, 4)
count++ message.content += `<br>Votre c&oelig;ur bat fort, vous avez maintenant ${link.coeur} points de C&oelig;ur pour ${suivant.name}.`
} link.prochainCoeur = link.coeur
count++
}
return foundry.utils.duplicate(link)
})
if (ajustMoral != 0) {
await actor.moralIncDec(ajustMoral, 'Coeur')
} }
)
if (count > 0) { if (count > 0) {
await actor.update({ 'system.subacteurs.suivants': newSuivants }); await actor.update({ 'system.subacteurs.suivants': newSuivants });
} }

View File

@@ -48,7 +48,7 @@ export class Distance {
static isVisible(token, defenderToken) { static isVisible(token, defenderToken) {
// TODO: regarder les StatusEffect aveuglé? // TODO: regarder les StatusEffect aveuglé?
if (Distance.$isToken(token) && Distance.$isToken(defenderToken)) { if (Distance.$isToken(token) && Distance.$isToken(defenderToken)) {
return canvas.effects.visibility.testVisibility(defenderToken.getCenterPoint(), { object: token }) return canvas.visibility.testVisibility(defenderToken.getCenterPoint(), { object: token })
} }
return true return true
} }

View File

@@ -7,7 +7,7 @@ import { TMRUtility } from "./tmr-utility.js";
export class DialogCreateSigneDraconique extends Dialog { export class DialogCreateSigneDraconique extends Dialog {
static async createSigneForActors() { static async createSigneForActors() {
const signe = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true}); const signe = await RdDItemSigneDraconique.randomSigneDraconique({ ephemere: true });
let dialogData = { let dialogData = {
signe: signe, signe: signe,
tmrs: TMRUtility.buildSelectionTypesTMR(signe.system.typesTMR), tmrs: TMRUtility.buildSelectionTypesTMR(signe.system.typesTMR),
@@ -36,25 +36,25 @@ export class DialogCreateSigneDraconique extends Dialog {
super(conf, options); super(conf, options);
this.dialogData = dialogData; this.dialogData = dialogData;
} }
async _onCreerSigneActeurs() { async _onCreerSigneActeurs() {
await this.html.find("[name='signe.system.ephemere']").change(); await this.html.find("[name='signe.system.ephemere']").change()
await this.html.find(".signe-xp-sort").change(); await this.html.find(".signe-xp-sort").change()
this.validerSigne(); this.validerSigne()
this.dialogData.actors.filter(it => it.selected) await Promise.all(this.dialogData.actors.filter(it => it.selected)
.map(it => game.actors.get(it.id)) .map(it => game.actors.get(it.id))
.forEach(actor => this._createSigneForActor(actor, this.dialogData.signe)); .map(async actor => await this._createSigneForActor(actor, this.dialogData.signe)))
} }
async _createSigneForActor(actor, signe) { async _createSigneForActor(actor, signe) {
actor.createEmbeddedDocuments("Item", [signe]); await actor.createEmbeddedDocuments("Item", [signe]);
ChatMessage.create({ await ChatMessage.createChatMessage.create({
whisper: ChatUtility.getOwners(actor), whisper: ChatUtility.getOwners(actor),
content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.hbs", { content: await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.hbs", {
signe: signe, signe: signe,
alias: actor.getAlias() alias: actor.getAlias()
}) })
}); })
} }
validerSigne() { validerSigne() {
@@ -67,7 +67,7 @@ export class DialogCreateSigneDraconique extends Dialog {
this.dialogData.signe.system.duree = this.html.find("[name='signe.system.duree']").val(); this.dialogData.signe.system.duree = this.html.find("[name='signe.system.duree']").val();
this.dialogData.signe.system.typesTMR = TMRUtility.buildListTypesTMRSelection(this.dialogData.tmrs); this.dialogData.signe.system.typesTMR = TMRUtility.buildListTypesTMRSelection(this.dialogData.tmrs);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
@@ -81,7 +81,7 @@ export class DialogCreateSigneDraconique extends Dialog {
} }
async setSigneAleatoire() { async setSigneAleatoire() {
const newSigne = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true}); const newSigne = await RdDItemSigneDraconique.randomSigneDraconique({ ephemere: true });
this.html.find("[name='signe.name']").val(newSigne.name); this.html.find("[name='signe.name']").val(newSigne.name);
this.html.find("[name='signe.system.valeur.norm']").val(newSigne.system.valeur.norm); this.html.find("[name='signe.system.valeur.norm']").val(newSigne.system.valeur.norm);
@@ -92,7 +92,7 @@ export class DialogCreateSigneDraconique extends Dialog {
this.html.find("[name='signe.system.ephemere']").prop("checked", newSigne.system.ephemere); this.html.find("[name='signe.system.ephemere']").prop("checked", newSigne.system.ephemere);
this.dialogData.tmrs = TMRUtility.buildSelectionTypesTMR(newSigne.system.typesTMR); this.dialogData.tmrs = TMRUtility.buildSelectionTypesTMR(newSigne.system.typesTMR);
this.dialogData.tmrs.forEach(t => { this.dialogData.tmrs.forEach(t => {
this.html.find(`[data-tmr-name='${t.name}']`).prop( "checked", t.selected); this.html.find(`[data-tmr-name='${t.name}']`).prop("checked", t.selected);
}) })
this.setEphemere(newSigne.system.ephemere); this.setEphemere(newSigne.system.ephemere);
} }
@@ -113,7 +113,7 @@ export class DialogCreateSigneDraconique extends Dialog {
onSelectTmr(event) { onSelectTmr(event) {
const tmrName = this.html.find(event.currentTarget)?.data("tmr-name"); const tmrName = this.html.find(event.currentTarget)?.data("tmr-name");
const onTmr = this.dialogData.tmrs.find(it => it.name == tmrName); const onTmr = this.dialogData.tmrs.find(it => it.name == tmrName);
if (onTmr){ if (onTmr) {
onTmr.selected = event.currentTarget.checked; onTmr.selected = event.currentTarget.checked;
} }
} }

View File

@@ -91,7 +91,7 @@ export class RdDItemCompetence extends RdDItem {
archetypeWarning: newNiv > this.system.niveau_archetype archetypeWarning: newNiv > this.system.niveau_archetype
} }
if (display) { if (display) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this.actor), whisper: ChatUtility.getOwners(this.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.hbs`, xpData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.hbs`, xpData)
}) })

View File

@@ -153,10 +153,10 @@ export class RdDItemSort extends RdDItem {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static incrementBonusCase(actor, sort, coord) { static async incrementBonusCase(actor, sort, coord) {
let bonuscase = RdDItemSort.calculBonuscase(sort, coord) let bonuscase = RdDItemSort.calculBonuscase(sort, coord)
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]); await actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]);
} }

View File

@@ -627,14 +627,14 @@ export class RdDItem extends Item {
system: { description: this.system.description }, system: { description: this.system.description },
properties: this.getProprietes(), properties: this.getProprietes(),
} }
renderTemplate(this.getChatItemTemplate(), chatData).then(html => { renderTemplate(this.getChatItemTemplate(), chatData).then(async html => {
let chatOptions = RdDUtility.chatDataSetup(html, modeOverride); let chatOptions = RdDUtility.chatDataSetup(html, modeOverride);
ChatMessage.create(chatOptions) await ChatMessage.create(chatOptions)
}); })
} }
getChatItemTemplate() { getChatItemTemplate() {
return 'systems/foundryvtt-reve-de-dragon/templates/post-item.hbs'; return 'systems/foundryvtt-reve-de-dragon/templates/post-item.hbs'
} }
static propertyIfDefined(name, val, condition = true) { static propertyIfDefined(name, val, condition = true) {

View File

@@ -21,7 +21,7 @@ export class RdDItemArmure extends RdDItem {
if (deterioration >= 10) { if (deterioration >= 10) {
deterioration -= 10; deterioration -= 10;
protection = this.calculProtectionDeterioree(); protection = this.calculProtectionDeterioree();
ChatMessage.create({ content: `Votre armure ${this.name} s'est détériorée, elle protège maintenant de ${protection}` }); await ChatMessage.create({ content: `Votre armure ${this.name} s'est détériorée, elle protège maintenant de ${protection}` });
} }
await this.update({ await this.update({
'system.deterioration': deterioration, 'system.deterioration': deterioration,

View File

@@ -54,7 +54,7 @@ export class RdDItemBlessure extends RdDItem {
} }
await this.createBlessure(actor, gravite) await this.createBlessure(actor, gravite)
ChatMessage.create({ await ChatMessage.create({
//TODO: hbs //TODO: hbs
content: `Blessure ${definition.label} appliquée à ${actor.name}<br>Perte d'endurance : ${lostEndurance} (${definition.endurance})<br>Perte de Vie : ${definition.vie}`, content: `Blessure ${definition.label} appliquée à ${actor.name}<br>Perte d'endurance : ${lostEndurance} (${definition.endurance})<br>Perte de Vie : ${definition.vie}`,
whisper: ChatUtility.getOwners(actor) whisper: ChatUtility.getOwners(actor)

View File

@@ -22,7 +22,7 @@ export class RdDItemMaladie extends RdDItem {
const souffrance = mal.system.identifie const souffrance = mal.system.identifie
? `de ${mal.name}` ? `de ${mal.name}`
: `d'un mal inconnu` : `d'un mal inconnu`
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(mal.actor), whisper: ChatUtility.getOwners(mal.actor),
content: `${mal.actor.name} souffre ${souffrance} (${Misc.typeName('Item', mal.type)}): vérifiez que les effets ne se sont pas aggravés !` content: `${mal.actor.name} souffre ${souffrance} (${Misc.typeName('Item', mal.type)}): vérifiez que les effets ne se sont pas aggravés !`
}) })

View File

@@ -354,7 +354,7 @@ class _10_4_6_ServicesEnCommerces extends Migration {
} }
async transformInventaireCommerce(service) { async transformInventaireCommerce(service) {
const serviceItems = (service.system.items ?? []); const serviceItems = (service.system.items ?? []);
const commerceItems = await Promise.all(serviceItems.map(async (it) => { return await this.transformToItemBoutique(it); })); const commerceItems = await Promise.all(serviceItems.map((it) => this.transformToItemBoutique(it)))
return commerceItems.concat(Monnaie.monnaiesStandard()); return commerceItems.concat(Monnaie.monnaiesStandard());
} }
@@ -434,7 +434,7 @@ class _10_7_0_MigrationBlessures extends Migration {
'system.blessures.graves.liste': [], 'system.blessures.graves.liste': [],
'system.blessures.critiques.liste': [] 'system.blessures.critiques.liste': []
}) })
})); }))
} }
creerBlessure(gravite, graviteTexte, blessure, timestamp) { creerBlessure(gravite, graviteTexte, blessure, timestamp) {
const dateBlessure = timestamp.addJours(-blessure.jours); const dateBlessure = timestamp.addJours(-blessure.jours);
@@ -786,6 +786,6 @@ export class Migrations {
} }
compareVersions(a, b) { compareVersions(a, b) {
return isNewerVersion(a.version, b.version) ? 1 : isNewerVersion(b.version, a.version) ? -1 : 0; return foundry.utils.isNewerVersion(a.version, b.version) ? 1 : foundry.utils.isNewerVersion(b.version, a.version) ? -1 : 0;
} }
} }

View File

@@ -24,6 +24,13 @@ export class Misc {
return text.charAt(0).toLowerCase() + text.slice(1); return text.charAt(0).toLowerCase() + text.slice(1);
} }
static stripHtml(html)
{
const tmp = document.createElement("DIV")
tmp.innerHTML = html
return tmp.textContent || tmp.innerText || ""
}
static toSignedString(number) { static toSignedString(number) {
const value = parseInt(number) const value = parseInt(number)
const isPositiveNumber = value != NaN && value > 0; const isPositiveNumber = value != NaN && value > 0;

View File

@@ -168,7 +168,7 @@ export class Apprecier {
async rollMoral(moral = undefined) { async rollMoral(moral = undefined) {
if (this.raisons.length > 0) { if (this.raisons.length > 0) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this.actor), whisper: ChatUtility.getOwners(this.actor),
content: 'Pas de jet de moral:' + Misc.concat(this.raisons.map(r => `<br> - ${r}`)) content: 'Pas de jet de moral:' + Misc.concat(this.raisons.map(r => `<br> - ${r}`))
}) })
@@ -176,7 +176,6 @@ export class Apprecier {
} }
moral = moral ?? this.appreciation.moral moral = moral ?? this.appreciation.moral
// TODO: jet de moral
await this.actor.jetDeMoral(moral, this.appreciation.bonmoment) await this.actor.jetDeMoral(moral, this.appreciation.bonmoment)
} }
} }

View File

@@ -199,8 +199,8 @@ export class RdDCombatManager extends Combat {
<div> <div>
Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}. Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
</div>` </div>`
ChatMessage.create({ content: msg }); ChatMessage.create({ content: msg })
game.combat.setInitiative(combatant._id, initData.init); game.combat.setInitiative(combatant._id, initData.init)
} }
} }
} }
@@ -610,7 +610,7 @@ export class RdDCombat {
async proposerAjustementTirLancer(rollData) { async proposerAjustementTirLancer(rollData) {
if (['tir', 'lancer'].includes(rollData.competence.system.categorie)) { if (['tir', 'lancer'].includes(rollData.competence.system.categorie)) {
if (this.defender.isEntiteBlurette()) { if (this.defender.isEntiteBlurette()) {
ChatMessage.create({ await ChatMessage.create({
content: `<strong>La cible est une blurette, l'arme à distance sera perdue dans le blurêve`, content: `<strong>La cible est une blurette, l'arme à distance sera perdue dans le blurêve`,
whisper: ChatUtility.getGMs() whisper: ChatUtility.getGMs()
}) })
@@ -625,7 +625,7 @@ export class RdDCombat {
}, },
Distance.ajustements(_token, defenderToken, { arme: rollData.arme, main: rollData.competence.system.categorie }) Distance.ajustements(_token, defenderToken, { arme: rollData.arme, main: rollData.competence.system.categorie })
) )
ChatMessage.create({ await ChatMessage.create({
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.hbs', info), content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-info-distance.hbs', info),
whisper: ChatUtility.getGMs() whisper: ChatUtility.getGMs()
}) })
@@ -756,7 +756,7 @@ export class RdDCombat {
let rollData = this._prepareAttaque(competence, arme) let rollData = this._prepareAttaque(competence, arme)
console.log("RdDCombat.attaque >>>", rollData) console.log("RdDCombat.attaque >>>", rollData)
if (arme) { if (arme) {
this.attacker.verifierForceMin(arme); await this.attacker.verifierForceMin(arme);
} }
await this.proposerAjustementTirLancer(rollData) await this.proposerAjustementTirLancer(rollData)

View File

@@ -27,20 +27,8 @@ const rddRollNumeric = /^(\d+)\s*([\+\-]?\d+)?\s*(s)?/;
export class RdDCommands { export class RdDCommands {
static init() { static init() {
const rddCommands = new RdDCommands(); game.system.rdd.commands = new RdDCommands()
game.system.rdd.commands = rddCommands; Hooks.on("chatMessage", (chatLog, message, msg) => game.system.rdd.commands.onChatMessage(message, msg))
Hooks.on("chatMessage", (html, content, msg) => {
if (content[0] == '/') {
let regExp = /(\S+)/g;
let commands = content.match(regExp);
if (rddCommands.processChatCommand(commands, content, msg)) {
return false;
}
}
return true;
});
} }
constructor() { constructor() {
@@ -216,6 +204,17 @@ export class RdDCommands {
} }
onChatMessage(message, msg = {}) {
const content = Misc.stripHtml(message)
if (content[0] == '/') {
const commands = content.match(/(\S+)/g)
if (this.processChatCommand(commands, content, msg)) {
return false
}
}
return true
}
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Manage chat commands */ /* Manage chat commands */
processChatCommand(commandLine, content = '', msg = {}) { processChatCommand(commandLine, content = '', msg = {}) {
@@ -368,7 +367,7 @@ export class RdDCommands {
const carac = params[0]; const carac = params[0];
const competence = length > 1 ? '/' + Misc.join(params.slice(1, length), ' ') : '' const competence = length > 1 ? '/' + Misc.join(params.slice(1, length), ' ') : ''
ChatMessage.create({ content: `@roll[${carac}${competence}/${diff}]` }) await ChatMessage.create({ content: `@roll[${carac}${competence}/${diff}]` })
} }
} }

View File

@@ -117,7 +117,7 @@ export class RdDMeteo {
meteo.nuage.description = RdDMeteo.nuage(meteo.nuage.force); meteo.nuage.description = RdDMeteo.nuage(meteo.nuage.force);
meteo.pluie.description = RdDMeteo.pluie(meteo.pluie.force); meteo.pluie.description = RdDMeteo.pluie(meteo.pluie.force);
ChatMessage.create({ await ChatMessage.create({
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-meteo.hbs', meteo), content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-resultat-meteo.hbs', meteo),
whisper: ChatUtility.getGMs() whisper: ChatUtility.getGMs()
}); });

View File

@@ -49,7 +49,7 @@ export class RdDTMRDialog extends Dialog {
await PixiTMR.init() await PixiTMR.init()
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.hbs', tmrData); let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.hbs', 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: ChatUtility.getGMs() }); await ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatUtility.getGMs() });
} }
return new RdDTMRDialog(html, actor, tmrData) return new RdDTMRDialog(html, actor, tmrData)
} }
@@ -138,7 +138,7 @@ export class RdDTMRDialog extends Dialog {
this.html.find('img.tmr-move').click(event => this.deplacementTMR(this.html.find(event.currentTarget)?.data('move'))); this.html.find('img.tmr-move').click(event => this.deplacementTMR(this.html.find(event.currentTarget)?.data('move')));
// Gestion du cout de montée en points de rêve // Gestion du cout de montée en points de rêve
await this.actor.reveActuelIncDec(this.calculCoutMonteeTMR()); await this.actor.reveActuelIncDec(await this.calculCoutMonteeTMR());
this.cumulFatigue += this.fatigueParCase; this.cumulFatigue += this.fatigueParCase;
// Le reste... // Le reste...
@@ -305,8 +305,8 @@ export class RdDTMRDialog extends Dialog {
await this.$checkQuitterTMR(); await this.$checkQuitterTMR();
} }
calculCoutMonteeTMR() { async calculCoutMonteeTMR() {
return ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse(); return ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - (await this.actor.countMonteeLaborieuse())
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -501,7 +501,7 @@ export class RdDTMRDialog extends Dialog {
rencData.poesie = { extrait: result.poesie, reference: result.reference }; rencData.poesie = { extrait: result.poesie, reference: result.reference };
rencData.message = this.$formatMessageRencontre(rencData, result.message); rencData.message = this.$formatMessageRencontre(rencData, result.message);
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this.actor), whisper: ChatUtility.getOwners(this.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData)
}); });
@@ -653,7 +653,7 @@ export class RdDTMRDialog extends Dialog {
this.restoreTMRAfterAction() this.restoreTMRAfterAction()
if (myRoll == 7) { if (myRoll == 7) {
ChatUtility.tellToUser(myRoll + ": Rencontre en " + coordTMR); ChatUtility.tellToUser(myRoll + ": Rencontre en " + coordTMR);
return await game.system.rdd.rencontresTMR.getRencontreAleatoire(tmr, this.actor.isMauvaiseRencontre()) return await game.system.rdd.rencontresTMR.getRencontreAleatoire(tmr, await this.actor.isMauvaiseRencontre())
} else { } else {
ChatUtility.tellToUser(myRoll + ": Pas de rencontre en " + coordTMR); ChatUtility.tellToUser(myRoll + ": Pas de rencontre en " + coordTMR);
return undefined; return undefined;
@@ -708,7 +708,7 @@ export class RdDTMRDialog extends Dialog {
return; return;
} }
rollData.poesie = await Poetique.getExtrait(); rollData.poesie = await Poetique.getExtrait();
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this.actor), whisper: ChatUtility.getOwners(this.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
}); });
@@ -728,16 +728,16 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
isCaseHumide(tmr) { isCaseHumide(tmr) {
if (!(TMRUtility.isCaseHumide(tmr) || this.isCaseHumideAdditionelle(tmr))) { if (!(TMRUtility.isCaseHumide(tmr) || this.isCaseHumideAdditionelle(tmr))) {
return false; return false
} }
if (this.isCaseMaitrisee(tmr.coord)) { if (this.isCaseMaitrisee(tmr.coord)) {
ChatMessage.create({ ChatMessage.create({
content: tmr.label + ": cette case humide est déja maitrisée grâce à votre Tête <strong>Quête des Eaux</strong>", content: tmr.label + ": cette case humide est déja maitrisée grâce à votre Tête <strong>Quête des Eaux</strong>",
whisper: ChatUtility.getOwners(this.actor) whisper: ChatUtility.getOwners(this.actor)
}); })
return false; return false
} }
return true; return true
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -747,16 +747,16 @@ export class RdDTMRDialog extends Dialog {
content: tmr.label + ": Vous êtes sous le coup d'une Impraticabilité des Ponts : ce pont doit être maîtrisé comme une case humide.", content: tmr.label + ": Vous êtes sous le coup d'une Impraticabilité des Ponts : ce pont doit être maîtrisé comme une case humide.",
whisper: ChatUtility.getOwners(this.actor) whisper: ChatUtility.getOwners(this.actor)
}); });
return true; return true
} }
if (this.isCaseInondee(tmr.coord)) { if (this.isCaseInondee(tmr.coord)) {
ChatMessage.create({ ChatMessage.create({
content: tmr.label + ": cette case est inondée, elle doit être maîtrisée comme une case humide.", content: tmr.label + ": cette case est inondée, elle doit être maîtrisée comme une case humide.",
whisper: ChatUtility.getOwners(this.actor) whisper: ChatUtility.getOwners(this.actor)
}); });
return true; return true
} }
return false; return false
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -825,7 +825,7 @@ export class RdDTMRDialog extends Dialog {
rollData.souffle = await this.actor.ajouterSouffle({ chat: false }) rollData.souffle = await this.actor.ajouterSouffle({ chat: false })
} }
rollData.poesie = await Poetique.getExtrait() rollData.poesie = await Poetique.getExtrait()
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(this.actor), whisper: ChatUtility.getOwners(this.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
}) })
@@ -876,7 +876,7 @@ export class RdDTMRDialog extends Dialog {
const reserveSecurite = EffetsDraconiques.isReserveEnSecurite(this.actor); const reserveSecurite = EffetsDraconiques.isReserveEnSecurite(this.actor);
const reserveExtensible = this.isReserveExtensible(coord); const reserveExtensible = this.isReserveExtensible(coord);
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) && (reserveSecurite || reserveExtensible)) { if (!EffetsDraconiques.isUrgenceDraconique(this.actor) && (reserveSecurite || reserveExtensible)) {
ChatMessage.create({ await ChatMessage.create({
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-demande-declencher-sort.hbs`, { content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-demande-declencher-sort.hbs`, {
actor: this.actor, actor: this.actor,
sorts: sorts, sorts: sorts,
@@ -892,13 +892,13 @@ export class RdDTMRDialog extends Dialog {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
lancerSortEnReserve(coord, sortId) { async lancerSortEnReserve(coord, sortId) {
const sort = this.getSortsReserve(coord) const sort = this.getSortsReserve(coord)
.find(it => it.id == sortId); .find(it => it.id == sortId);
if (sort) { if (sort) {
this.processSortReserve(sort); await this.processSortReserve(sort);
} else { } else {
ChatMessage.create({ await ChatMessage.create({
content: "Une erreur est survenue : impossible de récupérer le sort en réserve demandé.", content: "Une erreur est survenue : impossible de récupérer le sort en réserve demandé.",
whisper: ChatUtility.getOwners(this.actor) whisper: ChatUtility.getOwners(this.actor)
}); });

View File

@@ -132,9 +132,9 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-derivee.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/carac-derivee.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/carac-creature.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-entitee.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/carac-entitee.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-total.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/comp-creature.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/comp-creature.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/comp-possession.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/comp-possession.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/carac-total.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/competence.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/competence.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/competence-categorie.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/competence-categorie.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/xp-competences.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/xp-competences.hbs',
@@ -173,6 +173,7 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor/liens-vehicules.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/liens-vehicules.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.hbs', 'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.hbs',
'systems/foundryvtt-reve-de-dragon/templates/actor/tooltip-bonmoments.hbs',
//Items //Items
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs', 'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs',
'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs', 'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs',
@@ -300,6 +301,7 @@ export class RdDUtility {
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str)); Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args)); Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
Handlebars.registerHelper('json-stringify', object => JSON.stringify(object)) Handlebars.registerHelper('json-stringify', object => JSON.stringify(object))
Handlebars.registerHelper('escapeHtml', object => foundry.utils.escapeHTML(object))
// math // math
Handlebars.registerHelper('math-sum', (...values) => values.slice(0, -1).reduce(Misc.sum(), 0)) Handlebars.registerHelper('math-sum', (...values) => values.slice(0, -1).reduce(Misc.sum(), 0))
@@ -680,7 +682,7 @@ export class RdDUtility {
encaissement.dmg = dmg encaissement.dmg = dmg
if (ReglesOptionnelles.isUsing('localisation-aleatoire')) { if (ReglesOptionnelles.isUsing('localisation-aleatoire')) {
encaissement.dmg.loc = dmg.loc ?? await RdDUtility.getLocalisation(targetActor.type) encaissement.dmg.loc = dmg.loc ?? await RdDUtility.getLocalisation(targetActor.type)
encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps;' encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps'
} }
else { else {
encaissement.dmg.loc = { label: '' } encaissement.dmg.loc = { label: '' }
@@ -689,9 +691,9 @@ export class RdDUtility {
encaissement.armure = armure encaissement.armure = armure
encaissement.penetration = dmg.penetration encaissement.penetration = dmg.penetration
encaissement.total = jetTotal encaissement.total = jetTotal
encaissement.vie = await RdDUtility._evaluatePerte(encaissement.vie, over20); encaissement.vie = await RdDUtility._evaluatePerte(encaissement.vie, over20)
encaissement.endurance = await RdDUtility._evaluatePerte(encaissement.endurance, over20); encaissement.endurance = await RdDUtility._evaluatePerte(encaissement.endurance, over20)
return encaissement; return encaissement
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -750,12 +752,12 @@ export class RdDUtility {
actor.tmrApp.positionnerDemiReve(coord); actor.tmrApp.positionnerDemiReve(coord);
}); });
// Gestion spécifique des sorts en réserve multiples (ie têtes) // Gestion spécifique des sorts en réserve multiples (ie têtes)
$(html).on("click", '.declencher-sort-reserve', event => { $(html).on("click", '.declencher-sort-reserve', async event => {
let coord = event.currentTarget.attributes['data-tmr-coord'].value; let coord = event.currentTarget.attributes['data-tmr-coord'].value;
let sortId = event.currentTarget.attributes['data-sort-id'].value; let sortId = event.currentTarget.attributes['data-sort-id'].value;
let actorId = event.currentTarget.attributes['data-actor-id'].value; let actorId = event.currentTarget.attributes['data-actor-id'].value;
let actor = game.actors.get(actorId); let actor = game.actors.get(actorId);
actor.tmrApp.lancerSortEnReserve(coord, sortId); await actor.tmrApp.lancerSortEnReserve(coord, sortId);
// TODO: supprimer le message? // TODO: supprimer le message?
}); });
@@ -844,12 +846,12 @@ export class RdDUtility {
return game.user.character; return game.user.character;
} }
if (msgPlayer != undefined) { if (msgPlayer != undefined) {
msgPlayer += "<br>vous pouvez sélectionner un seul token lié à un personnage"; msgPlayer += "<br>vous pouvez sélectionner un seul token lié à un personnage"
msgPlayer += "<br>vous devez être connecté comme joueur avec un personnage sélectionné"; msgPlayer += "<br>vous devez être connecté comme joueur avec un personnage sélectionné";
ui.notifications.warn(msgPlayer); ui.notifications.warn(msgPlayer);
ChatMessage.create({ content: msgPlayer, whisper: [game.user] }); ChatMessage.create({ content: msgPlayer, whisper: [game.user] })
} }
return undefined; return undefined
} }
static doWithSelectedActor(onSelected = () => { }, filter = actor => true) { static doWithSelectedActor(onSelected = () => { }, filter = actor => true) {
@@ -942,9 +944,9 @@ export class RdDUtility {
content: `<p>Etes vous certain de vouloir supprimer: ${item.name}?</p>`, content: `<p>Etes vous certain de vouloir supprimer: ${item.name}?</p>`,
title: `Supprimer ${item.name}`, title: `Supprimer ${item.name}`,
buttonLabel: "Supprimer", buttonLabel: "Supprimer",
onAction: () => { onAction: async () => {
console.log('Delete : ', itemId); console.log('Delete : ', itemId);
actor.deleteEmbeddedDocuments('Item', [itemId], { renderSheet: false }); await actor.deleteEmbeddedDocuments('Item', [itemId], { renderSheet: false });
} }
}; };
if (item.isConteneurNonVide()) { if (item.isConteneurNonVide()) {
@@ -955,9 +957,9 @@ export class RdDUtility {
'deleteall': { 'deleteall': {
icon: '<i class="fas fa-check"></i>', icon: '<i class="fas fa-check"></i>',
label: "Supprimer conteneur et contenu", label: "Supprimer conteneur et contenu",
callback: () => { callback: async () => {
console.log("Delete : ", itemId); console.log("Delete : ", itemId);
actor.deleteAllConteneur(itemId, { renderSheet: false }); await actor.deleteAllConteneur(itemId, { renderSheet: false });
} }
} }
}); });
@@ -995,10 +997,10 @@ export class RdDUtility {
} }
/*-------------------------------------------- */ /*-------------------------------------------- */
static checkThanatosXP(item) { static async checkThanatosXP(item) {
if (item.isCompetencePersonnage() && item.name.includes('Thanatos')) { if (item.isCompetencePersonnage() && item.name.includes('Thanatos')) {
let message = "Vous avez mis des points d'Expérience en Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique."; let message = "Vous avez mis des points d'Expérience en Thanatos !<br>Vous devez réduire manuellement d'un même montant d'XP une autre compétence Draconique.";
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getUserAndGMs(), whisper: ChatUtility.getUserAndGMs(),
content: message content: message
}); });

View File

@@ -1,4 +1,5 @@
import { Grammar } from "../grammar.js" import { Grammar } from "../grammar.js"
import { CARACS } from "../rdd-carac.js"
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js" import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"
import { ROLL_TYPE_SORT } from "./roll-constants.mjs" import { ROLL_TYPE_SORT } from "./roll-constants.mjs"
import { RollPartCheckbox } from "./roll-part-checkbox.mjs" import { RollPartCheckbox } from "./roll-part-checkbox.mjs"
@@ -20,7 +21,7 @@ export class RollPartAstrologique extends RollPartCheckbox {
} }
isJetChance(rollData) { isJetChance(rollData) {
return Grammar.includesLowerCaseNoAccent(rollData.current.carac.key, 'chance') return Grammar.includesLowerCaseNoAccent(rollData.current.carac.key, CARACS.CHANCE)
} }
$isUsingAstrologie() { $isUsingAstrologie() {

View File

@@ -39,17 +39,17 @@ export class RollPartCuisine extends RollPartSelect {
loadRefs(rollData) { loadRefs(rollData) {
const refs = this.getRefs(rollData) const refs = this.getRefs(rollData)
const actor = rollData.active.actor const actor = rollData.active.actor
const cuisine = actor.getCompetence('Cuisine') refs.cuisine = actor.getCompetence('Cuisine')
const recettes = actor.items const recettes = actor.items
.filter(it => it.type == ITEM_TYPES.recettecuisine) .filter(it => it.type == ITEM_TYPES.recettecuisine)
.map(it => RollPartCuisine.$extractPreparationRecette(cuisine, it)) .map(it => RollPartCuisine.$extractPreparationRecette(refs.cuisine, it))
const ingredientsBruts = actor.items const ingredientsBruts = actor.items
.filter(it => it.getUtilisationCuisine() == 'brut') .filter(it => it.getUtilisationCuisine() == 'brut')
.map(it => RollPartCuisine.$extractPreparationBrut(cuisine, it)) .map(it => RollPartCuisine.$extractPreparationBrut(refs.cuisine, it))
refs.preparations = [RollPartCuisine.$preparationBasique(cuisine), ...recettes, ...ingredientsBruts] refs.preparations = [RollPartCuisine.$preparationBasique(refs.cuisine), ...recettes, ...ingredientsBruts]
if (refs.preparations.length > 0) { if (refs.preparations.length > 0) {
this.$selectPreparation(rollData) this.$selectPreparation(rollData)
this.$restoreSavedOptions(rollData) this.$restoreSavedOptions(rollData)

View File

@@ -280,7 +280,7 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */ /* -------------------------------------------- */
async setNewTimestamp(newTimestamp) { async setNewTimestamp(newTimestamp) {
const oldTimestamp = this.timestamp; const oldTimestamp = this.timestamp;
await Promise.all(game.actors.map(async actor => await actor.onTimeChanging(oldTimestamp, newTimestamp))); await Promise.all(game.actors.map(actor => actor.onTimeChanging(oldTimestamp, newTimestamp)))
RdDTimestamp.setWorldTime(newTimestamp); RdDTimestamp.setWorldTime(newTimestamp);
if (oldTimestamp.indexDate + 1 == newTimestamp.indexDate && ReglesOptionnelles.isUsing("chateau-dormant-gardien")) { if (oldTimestamp.indexDate + 1 == newTimestamp.indexDate && ReglesOptionnelles.isUsing("chateau-dormant-gardien")) {
await DialogChateauDormant.create(); await DialogChateauDormant.create();

View File

@@ -103,7 +103,7 @@ export class EffetsRencontre {
tete: context.rolled.isPart, tete: context.rolled.isPart,
poesie: await Poetique.getExtrait() poesie: await Poetique.getExtrait()
}) })
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(context.actor), whisper: ChatUtility.getOwners(context.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context)
}); });
@@ -118,7 +118,7 @@ export class EffetsRencontre {
context.queues.push(await context.actor.ajouterQueue()); context.queues.push(await context.actor.ajouterQueue());
} }
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(context.actor), whisper: ChatUtility.getOwners(context.actor),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context) content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.hbs`, context)
}); });

View File

@@ -27,13 +27,13 @@ export class PresentCites extends Draconique {
async _ajouterPresents(actor, tete) { async _ajouterPresents(actor, tete) {
let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord); let existants = actor.items.filter(it => this.isCase(it)).map(it => it.system.coord);
if (existants.length > 0) { if (existants.length > 0) {
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(actor), whisper: ChatUtility.getOwners(actor),
content: "Vous avez encore des présents dans des cités, vous devrez tirer une autre tête pour remplacer celle ci!" content: "Vous avez encore des présents dans des cités, vous devrez tirer une autre tête pour remplacer celle ci!"
}) })
} }
else { else {
let cites = TMRUtility.filterTMR(it => it.type == 'cite'); let cites = TMRUtility.filterTMR(it => it.type == 'cite')
for (let tmr of cites) { for (let tmr of cites) {
await this.createCaseTmr(actor, 'Présent', tmr, tete.id); await this.createCaseTmr(actor, 'Présent', tmr, tete.id);
} }
@@ -43,7 +43,7 @@ export class PresentCites extends Draconique {
async choisirUnPresent(casetmr, onChoixPresent) { async choisirUnPresent(casetmr, onChoixPresent) {
const presents = await game.system.rdd.rencontresTMR.getPresentsCite() const presents = await game.system.rdd.rencontresTMR.getPresentsCite()
const buttons = {}; const buttons = {};
presents.forEach(r => buttons['present'+r.id] = { icon: '<i class="fas fa-check"></i>', label: r.name, callback: async () => onChoixPresent(r) }); presents.forEach(r => buttons['present' + r.id] = { icon: '<i class="fas fa-check"></i>', label: r.name, callback: async () => onChoixPresent(r) });
let dialog = new Dialog({ let dialog = new Dialog({
title: "Présent des cités", title: "Présent des cités",
content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`, content: `La ${this.tmrLabel(casetmr)} vous offre un présent, faites votre choix`,

View File

@@ -18,7 +18,7 @@ export class UrgenceDraconique extends Draconique {
if (coordSortsReserve.length == 0) { if (coordSortsReserve.length == 0) {
// La queue se transforme en idée fixe // La queue se transforme en idée fixe
const ideeFixe = await RdDRollTables.getIdeeFixe(); const ideeFixe = await RdDRollTables.getIdeeFixe();
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(actor), whisper: ChatUtility.getOwners(actor),
content: `En l'absence de sorts en réserve, l'urgence draconique de ${actor.name} se transforme en ${ideeFixe.name}` content: `En l'absence de sorts en réserve, l'urgence draconique de ${actor.name} se transforme en ${ideeFixe.name}`
}); });

View File

@@ -174,7 +174,7 @@ export class DialogFatigueVoyage extends Dialog {
.filter(it => it.selected) .filter(it => it.selected)
.forEach(async it => { .forEach(async it => {
const perteFatigue = fatigueBase + it.ajustement const perteFatigue = fatigueBase + it.ajustement
ChatMessage.create({ await ChatMessage.create({
whisper: ChatUtility.getOwners(it.actor), whisper: ChatUtility.getOwners(it.actor),
content: await renderTemplate( content: await renderTemplate(
'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs', 'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs',

View File

@@ -1,9 +1,9 @@
{ {
"id": "foundryvtt-reve-de-dragon", "id": "foundryvtt-reve-de-dragon",
"title": "Rêve de Dragon", "title": "Rêve de Dragon",
"version": "13.0.21", "version": "13.0.36",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/releases/download/13.0.0/rddsystem.zip", "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/releases/download/13.0.36/rddsystem.zip",
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/releases/download/13.0.0/system.json", "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/releases/download/13.0.36/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": {
"minimum": "13", "minimum": "13",

View File

@@ -13,17 +13,17 @@
<li data-attribute="resistance" class="flexrow"> <li data-attribute="resistance" class="flexrow">
<span class="carac-label">Résistance</span> <span class="carac-label">Résistance</span>
<a class="resistance-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="resistance-moins"><i class="fa-solid fa-square-minus"></i></a>
<input type="text" name="system.etat.resistance.value" value="{{system.etat.resistance.value}}" data-dtype="Number" /> <input type="number" data-dtype="Number" name="system.etat.resistance.value" value="{{system.etat.resistance.value}}" min="0" max="{{system.etat.resistance.max}}"/>
/ /
<input type="text" name="system.etat.resistance.max" value="{{system.etat.resistance.max}}" data-dtype="Number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input type="number" data-dtype="Number" name="system.etat.resistance.max" value="{{system.etat.resistance.max}}" min="0" {{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
<a class="resistance-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="resistance-plus"><i class="fa-solid fa-square-plus"></i></a>
</li> </li>
<li data-attribute="structure" class="flexrow"> <li data-attribute="structure" class="flexrow">
<span class="carac-label">Structure</span> <span class="carac-label">Structure</span>
<a class="structure-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="structure-moins"><i class="fa-solid fa-square-minus"></i></a>
<input type="text" name="system.etat.structure.value" value="{{system.etat.structure.value}}" data-dtype="Number" /> <input type="number" data-dtype="Number" name="system.etat.structure.value" value="{{system.etat.structure.value}}" min="0" max="{{system.etat.structure.max}}"/>
/ /
<input type="text" name="system.etat.structure.max" value="{{system.etat.structure.max}}" data-dtype="Number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input type="number" data-dtype="Number" name="system.etat.structure.max" value="{{system.etat.structure.max}}" min="0" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
<a class="structure-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="structure-plus"><i class="fa-solid fa-square-plus"></i></a>
</li> </li>
</ul> </ul>
@@ -61,23 +61,23 @@
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<span class="carac-label">Vitesse</span> <span class="carac-label">Vitesse</span>
<input class="caracteristique streched" type="text" name="system.vitesse" value="{{system.vitesse}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input class="caracteristique streched" type="text" data-dtype="String" name="system.vitesse" value="{{system.vitesse}}" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<span class="carac-label">Bonus rames</span> <span class="carac-label">Bonus rames</span>
<input class="caracteristique streched" type="text" name="system.bonus" value="{{system.bonus}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input class="caracteristique streched" type="text" data-dtype="String" name="system.bonus" value="{{system.bonus}}" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<span class="carac-label">Manoeuvrabilité</span> <span class="carac-label">Manoeuvrabilité</span>
<input class="caracteristique streched" type="text" name="system.manoeuvrabilite" value="{{system.manoeuvrabilite}}" data-dtype="String" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input class="caracteristique streched" type="text" data-dtype="String" name="system.manoeuvrabilite" value="{{system.manoeuvrabilite}}" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<span class="carac-label">Equipage</span> <span class="carac-label">Equipage</span>
<input class="caracteristique streched" type="text" name="system.equipage" value="{{system.equipage}}" data-dtype="Number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input class="caracteristique streched" type="number" data-dtype="Number" name="system.equipage" value="{{system.equipage}}" min="0" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<span class="carac-label">Capacité d'Encombrement</span> <span class="carac-label">Capacité d'Encombrement</span>
<input class="caracteristique streched" type="text" name="system.capacite_encombrement" value="{{system.capacite_encombrement}}" data-dtype="Number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input class="caracteristique streched" type="number" data-dtype="Number" name="system.capacite_encombrement" value="{{system.capacite_encombrement}}" min="0" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
</li> </li>
</ol> </ol>
</div> </div>

View File

@@ -16,10 +16,12 @@
{{#if (or options.isGM (gt system.attributs.protection.value 0))}} {{#if (or options.isGM (gt system.attributs.protection.value 0))}}
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label for="system.attributs.protection.value" >Protection naturelle</label> <label for="system.attributs.protection.value" >Protection naturelle</label>
<input class="derivee-value" type="number" {{#unless options.isGM}}disabled{{/unless}} name="system.attributs.protection.value" value="{{system.attributs.protection.value}}" data-dtype="number"/> <input name="system.attributs.protection.value" class="derivee-value" type="number" data-dtype="Number"
value="{{system.attributs.protection.value}}" min="0" max="20" {{#unless options.isGM}}disabled{{/unless}}
/>
</li> </li>
{{/if}} {{/if}}
<li class="caracteristique flexrow list-item" > <li class="caracteristique flexrow list-item" >
<label class="derivee-label">Malus armure</label> <label class="derivee-label">Malus armure</label>
<input class="derivee-value" type="number" disabled value="{{calc.malusArmure}}" data-dtype="number"/> <input class="derivee-value" type="number" data-dtype="Number" disabled value="{{calc.malusArmure}}" />
</li> </li>

View File

@@ -1,18 +1,22 @@
<li class="item item-blessure flexrow list-item blessure-active-{{lowercase system.label}}" data-item-id="{{id}}" <li class="item item-blessure flexrow list-item blessure-active-{{lowercase system.label}}" data-item-id="{{id}}"
data-tooltip="Blessure {{system.label}}"> data-tooltip="Blessure {{system.label}}">
<span class="blessure-control"> <span class="blessure-control flexrow">
<img class="sheet-competence-img" src="{{img}}" /> <img class="sheet-competence-img" src="{{img}}" />
{{system.label}} {{#if (gt system.gravite 0)}}
{{system.label}}
{{/if}}
</span> </span>
{{#if (gt system.gravite 6)}} {{#if (gt system.gravite 6)}}
<span class="flexrow"></span> <span class="flexrow"></span>
<span class="flexrow"></span> <span class="flexrow"></span>
<span class="flexrow"></span>
{{else}} {{else}}
<span class="flexrow"> <span class="flexrow">
<input type="checkbox" class="blessure-premierssoins-done" name="blessure.{{id}}.premierssoins.done" {{#if system.premierssoins.done}}checked{{/if}}/> <input name="blessure.{{id}}.premierssoins.done" type="checkbox" class="blessure-premierssoins-done" {{#if system.premierssoins.done}}checked{{/if}}/>
{{#if system.premierssoins.done}} {{#if system.premierssoins.done}}
{{#unless system.soinscomplets.done}} {{#unless system.soinscomplets.done}}
<input type="text" class="blessure-premierssoins-bonus number-x2" name="blessure.{{id}}.premierssoins.bonus" data-dtype="number" value="{{system.premierssoins.bonus}}"/> <input name="blessure.{{id}}.premierssoins.bonus" type="text" data-dtype="Number" class="blessure-premierssoins-bonus number-x2"
value="{{system.premierssoins.bonus}}" min="-6" max="2"/>
{{/unless}} {{/unless}}
{{else}} {{else}}
<label>{{system.premierssoins.tache}} / {{system.gravite}}</label> <label>{{system.premierssoins.tache}} / {{system.gravite}}</label>
@@ -20,18 +24,22 @@
</span> </span>
<span class="flexrow"> <span class="flexrow">
{{#if system.premierssoins.done}} {{#if system.premierssoins.done}}
<input type="checkbox" class="blessure-soinscomplets-done" name="blessure.{{id}}.system.soinscomplets.done" {{#if system.soinscomplets.done}}checked{{/if}}/> <input name="blessure.{{id}}.system.soinscomplets.done" type="checkbox" class="blessure-soinscomplets-done" {{#if system.soinscomplets.done}}checked{{/if}}/>
{{#if system.soinscomplets.done}} {{#if system.soinscomplets.done}}
<input type="text" class="blessure-soinscomplets-bonus number-x2" name="blessure.{{id}}.system.soinscomplets.bonus" data-dtype="number" value="{{system.soinscomplets.bonus}}"/> <input name="blessure.{{id}}.system.soinscomplets.bonus" data-dtype="Number" type="text" class="blessure-soinscomplets-bonus number-x2"
{{/if}} value="{{system.soinscomplets.bonus}}" min="0" max="3"/>
{{else}} {{/if}}
<label>Difficulté {{system.difficulte}}</label>
{{/if}} {{/if}}
</span> </span>
<span class="flexrow">
{{#unless system.soinscomplets.done}}{{system.difficulte}}{{/unless}}
</span>
{{/if}} {{/if}}
<span> <span>
{{#if system.origine}}<span>Par {{system.origine}}</span>{{/if}} {{#if system.origine}}<span>Par {{system.origine}}</span>{{/if}}
{{#if (regle-optionnelle 'localisation-aleatoire')}}
{{#if system.localisation}}<span>{{system.localisation}}</span>{{/if}} {{#if system.localisation}}<span>{{system.localisation}}</span>{{/if}}
{{/if}}
</span> </span>
{{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=this options=@root.options}} {{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=this options=@root.options}}
</li> </li>

View File

@@ -13,10 +13,14 @@
<ul class="item-list alterne-list"> <ul class="item-list alterne-list">
<li class="competence-header flexrow" > <li class="competence-header flexrow" >
<span></span> <span>Soins</span>
<span>Premiers soins</span> <span>premiers</span>
<span>Soins complets</span> <span>complets</span>
<span>Diff</span>
<span>Source</span>
{{#if (regle-optionnelle 'localisation-aleatoire')}}
<span>Loc.</span> <span>Loc.</span>
{{/if}}
<span>Actions</span> <span>Actions</span>
</li> </li>
{{#each blessures as |blessure|}} {{#each blessures as |blessure|}}

View File

@@ -21,58 +21,58 @@
</li> </li>
<br> <br>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label>{{system.compteurs.moral.label}} <label data-tooltip-html="{{> "systems/foundryvtt-reve-de-dragon/templates/actor/tooltip-bonmoments.hbs"}}">{{system.compteurs.moral.label}}
<span> <span>
<a class="flex-shrink moral-malheureux" data-tooltip="Jet de moral situation malheureuse"><i class="fa-regular fa-face-frown"></i></a> <a class="flex-shrink moral-malheureux" data-tooltip="Jet de moral situation malheureuse"><i class="fa-regular fa-face-frown"></i></a>
<a class="flex-shrink moral-neutre" data-tooltip="Jet de moral situation neutre"><i class="fa-regular fa-face-meh"></i></a> <a class="flex-shrink moral-neutre" data-tooltip="Jet de moral situation neutre"><i class="fa-regular fa-face-meh"></i></a>
<a class="flex-shrink moral-heureux" data-tooltip="Jet de moral situation heureuse"><i class="fa-regular fa-face-smile"></i></a> <a class="flex-shrink moral-heureux" data-tooltip="Jet de moral situation heureuse"><i class="fa-regular fa-face-smile"></i></a>
</span> </span>
</label> </label>
<input class="derivee-value" type="number" name="system.compteurs.moral.value" value="{{system.compteurs.moral.value}}" data-dtype="number"/> <input name="system.compteurs.moral.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.moral.value}}" min="-3" max="3"/>
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label>{{system.compteurs.exaltation.label}}</label> <label>{{system.compteurs.exaltation.label}}</label>
<input class="derivee-value" type="number" name="system.compteurs.exaltation.value" value="{{system.compteurs.exaltation.value}}" data-dtype="number"/> <input name="system.compteurs.exaltation.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.exaltation.value}}" min="0"/>
<label>{{system.compteurs.dissolution.label}}</label> <label>{{system.compteurs.dissolution.label}}</label>
<input class="derivee-value" type="number" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/> <input name="system.compteurs.dissolution.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.dissolution.value}}" min="0"/>
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a class="roll-chance-actuelle">Chance actuelle</a></label> <label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a class="roll-chance-actuelle">Chance actuelle</a></label>
<input class="derivee-value" type="number" name="system.compteurs.chance.value" value="{{system.compteurs.chance.value}}" data-dtype="number"/> <input name="system.compteurs.chance.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.chance.value}}" />
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label>Destinée</label> <label>Destinée</label>
<input class="derivee-value" type="number" name="system.compteurs.destinee.value" value="{{system.compteurs.destinee.value}}" data-dtype="number"/> <input name="system.compteurs.destinee.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.destinee.value}}" min="0" max="7"/>
<label>voyage</label> <label>voyage</label>
<input class="derivee-value" type="number" name="system.compteurs.voyage.value" value="{{system.compteurs.voyage.value}}" data-dtype="number"/> <input name="system.compteurs.voyage.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.voyage.value}}" min="0" max="10"/>
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label class="flexrow derivee-label">{{system.compteurs.stress.label}} <label class="flexrow derivee-label">{{system.compteurs.stress.label}}
<a class="stress-test" data-tooltip="Transformer le stress"><i class="fa-regular fa-moon"></i></a> <a class="stress-test" data-tooltip="Transformer le stress"><i class="fa-regular fa-moon"></i></a>
</label> </label>
<input class="derivee-value" type="number" name="system.compteurs.stress.value" value="{{system.compteurs.stress.value}}" data-dtype="number"/> <input name="system.compteurs.stress.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.stress.value}}" min=""/>
</li> </li>
<br> <br>
<li class="caracteristique flexrow list-item" data-tooltip="Niveau d'éthylisme">
<label for="system.compteurs.ethylisme.value">{{system.compteurs.ethylisme.label}}
{{#if system.compteurs.ethylisme.nb_doses}}({{system.compteurs.ethylisme.nb_doses}} doses){{/if}}
</label>
<select name="system.compteurs.ethylisme.value" class="derivee-value" data-dtype="Number">
{{selectOptions (RDD_CONFIG 'niveauEthylisme') selected=system.compteurs.ethylisme.value valueAttr="value" nameAttr="value" labelAttr="label"}}
</select>
</li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label>Sustentation</label> <label>Sustentation</label>
<input class="derivee-value" type="number" disabled value="{{system.attributs.sust.value}}"/> <input class="derivee-value" type="number" value="{{system.attributs.sust.value}}" disabled />
<label for="system.compteurs.sust.value">mangé</label> <label for="system.compteurs.sust.value">mangé</label>
<input class="derivee-value" type="number" name="system.compteurs.sust.value" value="{{system.compteurs.sust.value}}" data-dtype="number"/> <input name="system.compteurs.sust.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.sust.value}}" />
</li> </li>
<li class="caracteristique flexrow list-item"> <li class="caracteristique flexrow list-item">
<label></label> <label></label>
<label></label> <label></label>
<label for="system.compteurs.eau.value">bu</label> <label for="system.compteurs.eau.value">bu</label>
<input class="derivee-value" type="number" name="system.compteurs.eau.value" value="{{system.compteurs.eau.value}}" data-dtype="number"/> <input name="system.compteurs.eau.value" class="derivee-value" type="number" data-dtype="Number" value="{{system.compteurs.eau.value}}" />
</li>
<li class="caracteristique flexrow list-item" data-tooltip="Niveau d'éthylisme">
<label for="system.compteurs.ethylisme.value">{{system.compteurs.ethylisme.label}}
{{#if system.compteurs.ethylisme.nb_doses}}({{system.compteurs.ethylisme.nb_doses}} doses){{/if}}
</label>
<select class="derivee-value" name="system.compteurs.ethylisme.value" data-dtype="Number">
{{selectOptions (RDD_CONFIG 'niveauEthylisme') selected=system.compteurs.ethylisme.value valueAttr="value" nameAttr="value" labelAttr="label"}}
</select>
</li> </li>
<br> <br>
</ul> </ul>

View File

@@ -4,7 +4,9 @@
<li class="caracteristique flexrow list-item {{#if carac.isLevelUp}}xp-level-up{{/if}}" data-attribute="{{key}}"> <li class="caracteristique flexrow list-item {{#if carac.isLevelUp}}xp-level-up{{/if}}" data-attribute="{{key}}">
{{#if (eq key 'taille')}} {{#if (eq key 'taille')}}
<span class="carac-label" name="system.carac.{{key}}.label">{{carac.label}}</span> <span class="carac-label" name="system.carac.{{key}}.label">{{carac.label}}</span>
<input class="carac-value" type="number" name="carac.{{key}}" value="{{carac.value}}" data-dtype="number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input name="carac.{{key}}" class="carac-value" type="number" data-dtype="Number"
value="{{carac.value}}" min="0" max="40"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
<label class="carac-xp"/> <label class="carac-xp"/>
{{else}} {{else}}
{{#if (actor-default @root.type 'carac' key 'derivee')}} {{#if (actor-default @root.type 'carac' key 'derivee')}}
@@ -23,9 +25,12 @@
{{else}} {{else}}
<span class="carac-label" name="system.carac.{{key}}.label"><a class="roll-carac" data-carac-name={{key}}>{{carac.label}}</a></span> <span class="carac-label" name="system.carac.{{key}}.label"><a class="roll-carac" data-carac-name={{key}}>{{carac.label}}</a></span>
{{/if}} {{/if}}
<input class="carac-value" type="number" name="carac.{{key}}" value="{{carac.value}}" data-dtype="number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} /> <input name="carac.{{key}}" class="carac-value" type="number" data-dtype="Number"
value="{{carac.value}}" min="0" max="40"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
<span class="carac-xp"> <span class="carac-xp">
<input class="carac-xp" type="number" name="system.carac.{{key}}.xp" value="{{carac.xp}}" data-dtype="number" <input name="system.carac.{{key}}.xp" class="carac-xp" type="number" data-dtype="Number"
value="{{carac.xp}}" min="0" max="300"
data-tooltip="Vous devez acquérir {{carac.xpNext}} points d'Experience pour augmenter votre {{carac.label}}" data-tooltip="Vous devez acquérir {{carac.xpNext}} points d'Experience pour augmenter votre {{carac.label}}"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}} {{#unless @root.options.vueDetaillee}}disabled{{/unless}}
/> />

View File

@@ -22,9 +22,9 @@
<div class="form-group"> <div class="form-group">
<span> <span>
<label for="system.pourcentage">Appliquer un pourcentage sur les prix</label> <label for="system.pourcentage">Appliquer un pourcentage sur les prix</label>
<input {{@root.disabled}} class="attribute-value" type="number" data-dtype="Number" <input name="system.pourcentage" class="attribute-value" type="number" data-dtype="Number"
name="system.pourcentage" value="{{system.pourcentage}}" value="{{system.pourcentage}}" min="20" max="500" step="5"
min="20" max="500" step="5"/> {{@root.disabled}} />
</span> </span>
</div> </div>
{{/if}} {{/if}}
@@ -40,13 +40,12 @@
</div> </div>
<hr> <hr>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.hbs"}} {{> "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.hbs"}}
{{log @root.options}}
{{#unless system.illimite}}
{{#if @root.options.isObserver}} {{#if @root.options.isObserver}}
<hr> <hr>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-monnaie.hbs"}} {{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-monnaie.hbs"}}
{{/if}} {{/if}}
{{/unless}}
<br> <br>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/editor-notes-mj.hbs"}} {{> "systems/foundryvtt-reve-de-dragon/templates/actor/editor-notes-mj.hbs"}}
<br> <br>

View File

@@ -14,14 +14,14 @@
</a> </a>
</span> </span>
{{#unless item.parent.system.illimite}} {{#unless item.parent.system.illimite}}
<span class="equipement-detail-buttons flexrow"> <span class="equipement-detail">
{{#unless (or (eq item.type 'service') (and (eq item.type 'conteneur') (not vide)))}} {{#unless (or (eq item.type 'service') (and (eq item.type 'conteneur') (not vide)))}}
{{#if options.isOwner}} {{#if options.isOwner}}
<a class="item-quantite-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="item-quantite-moins"><i class="fa-solid fa-square-minus"></i></a>
{{/if}} {{/if}}
<input {{#unless options.isOwner}}disabled{{/unless}} type="number" data-dtype="Number" <input name="items[{{item._id}}].system.quantite"
class="item-quantite number-x3" name="items[{{item._id}}].system.quantite" class="item-quantite number-x3" type="number" data-dtype="Number"
value="{{item.system.quantite}}" /> value="{{item.system.quantite}}" {{#unless options.isOwner}}disabled{{/unless}} />
{{#if options.isOwner}} {{#if options.isOwner}}
<a class="item-quantite-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="item-quantite-plus"><i class="fa-solid fa-square-plus"></i></a>
{{/if}} {{/if}}
@@ -30,13 +30,10 @@
{{/unless}} {{/unless}}
<span class="equipement-detail"> <span class="equipement-detail">
{{#unless (and (eq item.type 'conteneur') (not vide))}} {{#unless (and (eq item.type 'conteneur') (not vide))}}
<input {{#unless options.isOwner}}disabled{{/unless}} type="number" data-dtype="Number" <input name="items[{{item._id}}].system.cout"
class="input-prix number-x3 item-cout" name="items[{{item._id}}].system.cout" class="input-prix number-x3 item-cout" type="number" data-dtype="Number"
{{#if options.isObserver}} value="{{numberFormat (ifThen options.isObserver item.system.cout (calculerPrixCommercant item)) decimals=2 sign=false}}"
value="{{numberFormat item.system.cout decimals=2 sign=false}}" {{#unless options.isOwner}}disabled{{/unless}} />
{{else}}
value="{{numberFormat (calculerPrixCommercant item) decimals=2 sign=false}}"
{{/if}} />
{{/unless}} {{/unless}}
</span> </span>
{{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=item options=@root.options}} {{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=item options=@root.options}}

View File

@@ -23,7 +23,7 @@
<span class="equipement-detail">Quantité</span> <span class="equipement-detail">Quantité</span>
{{/unless}} {{/unless}}
<span class="equipement-detail">Prix (sols)</span> <span class="equipement-detail">Prix (sols)</span>
<span class="equipement-actions">Actions</span> <span class="item-actions-controls">Actions</span>
</li> </li>
{{#each (trier inventaires) as |item id|}} {{#each (trier inventaires) as |item id|}}
{{#unless item.estContenu}} {{#unless item.estContenu}}

View File

@@ -8,15 +8,14 @@
<img class="sheet-competence-img" src="{{comp.img}}" data-tooltip="{{comp.name}}"/> <img class="sheet-competence-img" src="{{comp.img}}" data-tooltip="{{comp.name}}"/>
<span>{{comp.name}}</span> <span>{{comp.name}}</span>
</a> </a>
<input class="competence-carac creature-carac" type="text" compname="{{comp.name}}" name="{{comp._id}}.carac" <input name="{{comp._id}}.carac" class="competence-carac creature-carac" type="number" data-dtype="Number"
value="{{comp.system.carac_value}}" data-dtype="number" compname="{{comp.name}}" value="{{comp.system.carac_value}}"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}/> {{#unless @root.options.vueDetaillee}}disabled{{/unless}}/>
<input class="competence-value creature-niveau" type="text" data-dtype="number" <input name="{{comp._id}}.niveau" class="competence-value creature-niveau" type="text" data-dtype="Number"
compname="{{comp.name}}" name="{{comp._id}}.niveau" compname="{{comp.name}}" value="{{plusMoins comp.system.niveau}}"
value="{{plusMoins comp.system.niveau}}"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}} {{#unless @root.options.vueDetaillee}}disabled{{/unless}}
/> />
<input class="competence-damage creature-dommages" type="text" data-dtype="number" <input class="competence-damage creature-dommages" type="text" data-dtype="Number"
{{#if comp.isdommages}} {{#if comp.isdommages}}
compname="{{comp.name}}" name="{{comp._id}}.dommages" compname="{{comp.name}}" name="{{comp._id}}.dommages"
value="{{plusMoins comp.system.dommages}}" value="{{plusMoins comp.system.dommages}}"

View File

@@ -11,14 +11,14 @@
</a> </a>
{{/if}} {{/if}}
<input class="competence-value" type="text" compname="{{name}}" name="comp-value-{{name}}" <input name="comp-value-{{name}}" class="competence-value" type="text" data-dtype="Number"
value="{{plusMoins system.niveau}}" data-dtype="number" compname="{{name}}" value="{{plusMoins system.niveau}}"
{{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} /> {{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} />
{{#if @root.options.vueDetaillee}} {{#if @root.options.vueDetaillee}}
<span class="competence-xp"> <span class="competence-xp">
<input class="competence-xp " type="text" compname="{{name}}" name="comp-xp-{{name}}" <input name="comp-xp-{{name}}" class="competence-xp" type="text" data-dtype="Number"
value="{{numberFormat system.xp decimals=0 sign=false}}" data-dtype="number" compname="{{name}}" value="{{numberFormat system.xp decimals=0 sign=false}}"
{{#unless system.isLevelUp}} {{#unless system.isLevelUp}}
data-tooltip="Vous devez acquérir {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}" data-tooltip="Vous devez acquérir {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}"
{{/unless}} {{/unless}}
@@ -26,8 +26,8 @@
</span> </span>
{{/if}} {{/if}}
{{#if (eq system.categorie 'draconic')}} {{#if (eq system.categorie 'draconic')}}
<input class="competence-xp-sort" type="text" compname="{{name}}" name="comp-xp-sort-{{name}}" <input name="comp-xp-sort-{{name}}" class="competence-xp-sort" type="text" data-dtype="Number"
value="{{numberFormat system.xp_sort decimals=0 sign=false}}" data-dtype="number" compname="{{name}}" value="{{numberFormat system.xp_sort decimals=0 sign=false}}"
{{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} /> {{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} />
{{/if}} {{/if}}
{{#if @root.options.vueDetaillee}} {{#if @root.options.vueDetaillee}}
@@ -40,8 +40,9 @@
{{else}} {{else}}
<i class="far fa-circle"></i> <i class="far fa-circle"></i>
{{/if}} {{/if}}
<input class="competence-archetype niveau-archetype" type="text" compname="{{name}}" name="comp-archetype-{{name}}" <input name="comp-archetype-{{name}}" class="competence-archetype niveau-archetype" type="text" data-dtype="Number"
value="{{plusMoins system.niveau_archetype}}" data-dtype="number" data-tooltip="Niveau d'archétype {{plusMoins system.niveau_archetype}}" compname="{{name}}" value="{{plusMoins system.niveau_archetype}}"
data-tooltip="Niveau d'archétype {{plusMoins system.niveau_archetype}}"
{{#if (not @root.options.vueArchetype)}}disabled{{/if}} /> {{#if (not @root.options.vueArchetype)}}disabled{{/if}} />
</div> </div>
{{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=this options=@root.options}} {{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=this options=@root.options}}

View File

@@ -4,8 +4,9 @@
<label class="compteur"> <label class="compteur">
<a class="jet-vie" name="system.sante.vie.label" data-tooltip="Faire un jet de vie">Vie</a> <a class="jet-vie" name="system.sante.vie.label" data-tooltip="Faire un jet de vie">Vie</a>
<a class="vie-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="vie-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="resource-content" type="text" name="system.sante.vie.value" value="{{system.sante.vie.value}}" data-dtype="Number" /> <input name="system.sante.vie.value" class="resource-content" type="number" data-dtype="Number"
/ {{system.sante.vie.max}} value="{{system.sante.vie.value}}" min="0" max="{{system.sante.vie.max}}" />
/ {{system.sante.vie.max}}
<a class="vie-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="vie-plus"><i class="fa-solid fa-square-plus"></i></a>
</label> </label>
</li> </li>
@@ -13,8 +14,9 @@
<label class="compteur"> <label class="compteur">
<a class="jet-endurance" name="system.sante.endurance.label" data-tooltip="Faire un jet d'endurance pour ne pas être sonné">Endurance</a> <a class="jet-endurance" name="system.sante.endurance.label" data-tooltip="Faire un jet d'endurance pour ne pas être sonné">Endurance</a>
<a class="endurance-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="endurance-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="resource-content" type="text" name="system.sante.endurance.value" value="{{system.sante.endurance.value}}" data-dtype="Number"/> <input name="system.sante.endurance.value" class="resource-content" type="number" data-dtype="Number"
/ {{system.sante.endurance.max}} value="{{system.sante.endurance.value}}" min="0" max="{{system.sante.endurance.max}}" />
/ {{system.sante.endurance.max}}
<a class="endurance-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="endurance-plus"><i class="fa-solid fa-square-plus"></i></a>
</label> </label>
</li> </li>

View File

@@ -2,11 +2,12 @@
<div class="flex-group-center header-compteurs"> <div class="flex-group-center header-compteurs">
<ul> <ul>
<li data-attribute="endurance"> <li data-attribute="endurance">
<label class="compteur"> <label class="compteur" for="system.sante.endurance.value">
Endurance Endurance
<a class="endurance-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="endurance-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="resource-content" type="text" name="system.sante.endurance.value" value="{{system.sante.endurance.value}}" data-dtype="Number" /> <input name="system.sante.endurance.value" class="resource-content" type="text" data-dtype="Number"
/ {{system.sante.endurance.max}} value="{{system.sante.endurance.value}}" min="0" max="{{system.sante.endurance.max}}" />
/ {{system.sante.endurance.max}}
<a class="endurance-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="endurance-plus"><i class="fa-solid fa-square-plus"></i></a>
</label> </label>
</li> </li>

View File

@@ -6,7 +6,8 @@
<a class="jet-vie" data-tooltip="Faire un jet de vie">Vie</a> <a class="jet-vie" data-tooltip="Faire un jet de vie">Vie</a>
</label> </label>
<a class="vie-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="vie-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="resource-content" type="text" name="system.sante.vie.value" value="{{system.sante.vie.value}}" data-dtype="Number"/> <input name="system.sante.vie.value" class="resource-content" type="number" data-dtype="Number"
value="{{system.sante.vie.value}}" min="-{{system.attributs.sconst.value}}" max="{{system.sante.vie.max}}"/>
<span>/ {{system.sante.vie.max}}</span> <span>/ {{system.sante.vie.max}}</span>
<a class="vie-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="vie-plus"><i class="fa-solid fa-square-plus"></i></a>
</div> </div>
@@ -17,7 +18,8 @@
<a class="jet-endurance" data-tooltip="Faire un jet d'endurance pour ne pas être sonné">Endurance</a> <a class="jet-endurance" data-tooltip="Faire un jet d'endurance pour ne pas être sonné">Endurance</a>
</label> </label>
<a class="endurance-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="endurance-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="resource-content" type="text" name="system.sante.endurance.value" value="{{system.sante.endurance.value}}" data-dtype="Number"/> <input name="system.sante.endurance.value" class="resource-content" type="number" data-dtype="Number"
value="{{system.sante.endurance.value}}" min="0" max="{{system.sante.endurance.max}}"/>
<span>/ {{system.sante.endurance.max}}</span> <span>/ {{system.sante.endurance.max}}</span>
<a class="endurance-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="endurance-plus"><i class="fa-solid fa-square-plus"></i></a>
</div> </div>
@@ -27,7 +29,8 @@
<label for="system.sante.fatigue.value">Fatigue ({{calc.fatigue.malus}})</label> <label for="system.sante.fatigue.value">Fatigue ({{calc.fatigue.malus}})</label>
<div class="tooltiptext ttt-fatigue">{{{calc.fatigue.html}}}</div> <div class="tooltiptext ttt-fatigue">{{{calc.fatigue.html}}}</div>
<a class="fatigue-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="fatigue-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="resource-content" type="text" name="system.sante.fatigue.value" value="{{system.sante.fatigue.value}}" data-dtype="Number" /> <input name="system.sante.fatigue.value" class="resource-content" type="number" data-dtype="Number"
value="{{system.sante.fatigue.value}}" min="0" max="{{system.sante.fatigue.max}}"/>
<span>/ {{system.sante.fatigue.max}}</span> <span>/ {{system.sante.fatigue.max}}</span>
<a class="fatigue-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="fatigue-plus"><i class="fa-solid fa-square-plus"></i></a>
</div> </div>

View File

@@ -1,12 +1,9 @@
<div> {{#if effects}}
{{#if effects}} {{#each effects as |effect|}}
{{#each effects as |effect|}} <span class="active-effect" data-effect="{{effect.id}}">
<span class="active-effect" data-effect="{{effect.id}}"> <img class="button-effect-img {{#if @root.options.isGM}}delete-active-effect{{/if}}" src="{{effect.img}}" data-tooltip="{{localize effect.name}}" width="24" height="24" />
<img class="button-effect-img {{#if @root.options.isGM}}delete-active-effect{{/if}}" src="{{effect.img}}" data-tooltip="{{localize effect.name}}" width="24" height="24" /> </span>
</span> {{/each}}
{{/each}} {{else}}
{{#if calc.surprise}}<span>{{calc.surprise}}!</span>{{/if}} Aucun effet actif
{{else}} {{/if}}
Aucun effet actif
{{/if}}
</div>

View File

@@ -1,6 +1,7 @@
<div class="flex-group-left header-etats"> <div class="flex-between header-etats">
<div class="flexcol"> <div class="flexcol">
<div>{{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-effects.hbs"}} Enc: {{calc.surenc}}</div> <div>{{>"systems/foundryvtt-reve-de-dragon/templates/actor/header-effects.hbs"}} Enc: {{calc.surenc}}</div>
{{#if calc.surprise}}<div>{{calc.surprise}}!</div>{{/if}}
<div>{{system.compteurs.etat.label}}: {{system.compteurs.etat.value}}</div> <div>{{system.compteurs.etat.label}}: {{system.compteurs.etat.value}}</div>
{{#each calc.blessures as |blessure|}} {{#each calc.blessures as |blessure|}}
<div>{{blessure}}</div> <div>{{blessure}}</div>

View File

@@ -1,5 +1,5 @@
{{#if system.attributs.hautrevant.value}} {{#if system.attributs.hautrevant.value}}
<div class="tmr-buttons"> <div class="tmr-buttons flex-group-left flex-shrink">
<span> <span>
<a class="button-tmr" data-tooltip="Montée dans les Terres M&eacute;dianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}> <a class="button-tmr" data-tooltip="Montée dans les Terres M&eacute;dianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}>
<img class="button-img" src="systems/foundryvtt-reve-de-dragon/assets/ui/icon-tmr-normal.svg"/> <img class="button-img" src="systems/foundryvtt-reve-de-dragon/assets/ui/icon-tmr-normal.svg"/>

View File

@@ -8,19 +8,21 @@
<span class="equipement-valeur {{#unless (gt piece.system.cout 0)}}field-error{{/unless}}"> <span class="equipement-valeur {{#unless (gt piece.system.cout 0)}}field-error{{/unless}}">
({{piece.system.cout}} Sols) ({{piece.system.cout}} Sols)
</span> </span>
<span class="equipement-detail">
{{#if @root.options.isOwner}} {{#if @root.options.isOwner}}
<span class="equipement-button item-controls"> <span class="item-controls">
<a class="item-quantite-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="item-quantite-moins"><i class="fa-solid fa-square-minus"></i></a>
</span> </span>
{{/if}} {{/if}}
<span class="equipement-detail"> <span>
<span>{{piece.system.quantite}}</span> <span>{{piece.system.quantite}}</span>
</span> </span>
{{#if @root.options.isOwner}} {{#if @root.options.isOwner}}
<span class="equipement-button item-controls"> <span class="item-controls">
<a class="item-quantite-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="item-quantite-plus"><i class="fa-solid fa-square-plus"></i></a>
</span> </span>
{{/if}} {{/if}}
</span>
{{#if @root.options.isOwner}} {{#if @root.options.isOwner}}
{{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=signe options=@root.options}} {{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=signe options=@root.options}}
{{/if}} {{/if}}

View File

@@ -18,9 +18,9 @@
<ul class="item-list alterne-list liste-equipement"> <ul class="item-list alterne-list liste-equipement">
<li class="competence-header flexrow"> <li class="competence-header flexrow">
<span class="equipement-nom">Nom</span> <span class="equipement-nom">Nom</span>
<span class="equipement-detail-buttons">Q.</span> <span class="equipement-detail">Quantité</span>
<span class="equipement-detail">Enc.</span> <span class="equipement-detail">Enc.</span>
<span class="equipement-actions">Actions</span> <span class="item-actions-controls item-controls ">Actions</span>
</li> </li>
{{#each inventaires as |item id|}} {{#each inventaires as |item id|}}
{{#unless item.estContenu}} {{#unless item.estContenu}}

View File

@@ -1,7 +1,7 @@
{{#if jeus.length}} {{#if jeux.length}}
<h3>Jeux :</h3> <h3>Jeux :</h3>
<ul class="item-list alterne-list"> <ul class="item-list alterne-list">
{{#each jeus 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}}">
<div class="action-jeu list-item-label"><a>{{jeu.name}} (base {{jeu.system.base}})</a></div> <div class="action-jeu list-item-label"><a>{{jeu.name}} (base {{jeu.system.base}})</a></div>
{{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=jeu options=@root.options}} {{>'systems/foundryvtt-reve-de-dragon/templates/actor/item-action-controls.hbs' item=jeu options=@root.options}}

View File

@@ -11,7 +11,7 @@
<span class="generic-label">Seuil de Rêve :</span> <span class="generic-label">Seuil de Rêve :</span>
<span> <span>
{{#if options.isGM}} {{#if options.isGM}}
<input class="competence-value seuil-reve-value" type="text" name="system.reve.seuil.value" value="{{system.reve.seuil.value}}" data-dtype="Number"/> <input name="system.reve.seuil.value" class="competence-value seuil-reve-value" type="number" data-dtype="Number" value="{{system.reve.seuil.value}}" min="0" max="60" />
{{else}} {{else}}
{{system.reve.seuil.value}} {{system.reve.seuil.value}}
{{/if}} {{/if}}
@@ -21,7 +21,7 @@
<span class="generic-label">Refoulement : </span> <span class="generic-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 name="system.reve.refoulement.value" class="competence-value" type="number" data-dtype="Number" value="{{system.reve.refoulement.value}}" min="0" max="20" />
{{else}} {{else}}
{{system.reve.refoulement.value}} {{system.reve.refoulement.value}}
{{/if}} {{/if}}

View File

@@ -1,7 +1,7 @@
<div class="flexrow random-field" data-path="{{path}}"> <div class="flexrow random-field" data-path="{{path}}">
<label for="{{path}}">{{label}}:</label> <label for="{{path}}">{{label}}:</label>
{{#if (eq type 'entier')}} {{#if (eq type 'entier')}}
<input class="current-value" name="current.{{path}}" value="{{value}}" placeholder="{{label}}" type="number" data-dtype="Number" min="{{min}}" max="{{max}}"/> <input name="current.{{path}}" class="current-value" type="number" data-dtype="Number" placeholder="{{label}}" value="{{value}}" min="{{min}}" max="{{max}}"/>
{{else if (eq type 'heure')}} {{else if (eq type 'heure')}}
<select class="current-value" name="current.{{path}}" value="{{value}}" type="text" data-dtype="String"> <select class="current-value" name="current.{{path}}" value="{{value}}" type="text" data-dtype="String">
{{#select value}} {{#select value}}
@@ -9,7 +9,7 @@
{{/select}} {{/select}}
</select> </select>
{{else}} {{else}}
<input class="current-value" name="current.{{path}}" value="{{value}}" placeholder="{{label}}" type="text" data-dtype="String"/> <input name="current.{{path}}" class="current-value" type="text" data-dtype="String" value="{{value}}" placeholder="{{label}}"/>
{{/if}} {{/if}}
<div class="item-controls"> <div class="item-controls">
<input class="check-for-random" type="checkbox" data-tooltip="Sélectionné pour génération automatique" {{#if checked}}checked{{/if}}/> <input class="check-for-random" type="checkbox" data-tooltip="Sélectionné pour génération automatique" {{#if checked}}checked{{/if}}/>

View File

@@ -0,0 +1,10 @@
<div class=&quot;toolclip themed theme-dark&quot;>
<p><b>Bon moments du jour</b></p>
{{#if system.compteurs.bonmoments}}
{{#each system.compteurs.bonmoments as |bonmoment|}}
<p>{{bonmoment}}</p>
{{/each}}
{{else}}
<p>Rien de notable</p>
{{/if}}
</div>

View File

@@ -1,12 +1,10 @@
<div> <div>
<ul class="item-list"> <ul class="item-list">
<li class="flexrow"> <li class="flexrow">
<label class="derivee-label" for="system.compteurs.experience.value">Stress transformé</label> <label for="system.compteurs.experience.value" class="derivee-label">Stress transformé</label>
{{#if options.vueDetaillee}} {{#if options.vueDetaillee}}
<input class="resource-content" <input name="system.compteurs.experience.value" class="resource-content" type="number" data-dtype="Number" size="3"
type="text" data-dtype="Number" size="3" value="{{system.compteurs.experience.value}}" min="0" max="100"/>
name="system.compteurs.experience.value"
value="{{system.compteurs.experience.value}}"/>
{{else}} {{else}}
<label name="system.compteurs.experience.value">{{system.compteurs.experience.value}}</label> <label name="system.compteurs.experience.value">{{system.compteurs.experience.value}}</label>
{{/if}} {{/if}}

View File

@@ -26,9 +26,17 @@
{{alias}} {{alias}}
{{#if blessure}} {{#if blessure}}
{{#if (gt blessure.system.gravite 0)}}subit une blessure {{blessure.name}} {{#if (gt blessure.system.gravite 0)}}subit une blessure {{blessure.name}}
{{~else~}}subit une éraflure {{~else~}}subit une contusion/éraflure
{{~/if~}} {{~/if~}}
{{~else~}}s'en sort sans une égratignure {{~else if isEntiteIncarnee~}}
{{#if (gte gravite 6)}}subit une blessure critique
{{~else if (gte gravite 4)}}subit une blessure grave
{{~else if (gte gravite 2)}}subit une blessure légère
{{~else if (gte gravite 0)}}subit une contusion/éraflure
{{~else~}}s'en sort sans une égratignure
{{/if}}
{{~else~}}
s'en sort sans une égratignure
{{~/if~}} {{~/if~}}
{{/unless}} {{/unless}}

View File

@@ -1,6 +1,6 @@
<label for="{{path}}.nombre">{{label}}</label> <label for="{{path}}.nombre">{{label}}</label>
<div class="flexrow"> <div class="flexrow">
<input type="number" name="{{path}}.nombre" value="{{nombre}}" data-dtype="Number"/> <input name="{{path}}.nombre" type="number" data-dtype="Number" value="{{nombre}}" min="0" max="336"/>
<select name="{{path}}.unite" data-dtype="String" > <select name="{{path}}.unite" data-dtype="String" >
{{selectOptions (timestamp-formulesPeriode) selected=unite labelAttr="label" nameAttr="code" valueAttr="code"}} {{selectOptions (timestamp-formulesPeriode) selected=unite labelAttr="label" nameAttr="code" valueAttr="code"}}
</select> </select>

View File

@@ -1,15 +1,14 @@
<div class="flexcol calendar-timestamp-edit"> <div class="flexcol calendar-timestamp-edit">
<div class="flexrow"> <div class="flexrow">
<label>{{label}}</label> <label for="{{path}}.jourDuMois">{{label}}</label>
<input {{#if disabled}}{{disabled}}{{/if}} <input name="{{path}}.jourDuMois" class="flex-shrink number-x2" type="number" data-dtype="Number"
class="flex-shrink number-x2" value="{{jourDuMois}}" min="1" max="28"
type="number" data-dtype="Number" min="1" max="28" {{#if disabled}}{{disabled}}{{/if}} />
name="{{path}}.jourDuMois" value="{{jourDuMois}}" />
<select {{#if disabled}}{{disabled}}{{/if}} name="{{path}}.mois" class="calendar-signe-heure" data-dtype="String"> <select {{#if disabled}}{{disabled}}{{/if}} name="{{path}}.mois" class="calendar-signe-heure" data-dtype="String">
{{selectOptions (RDD_CONFIG 'heuresRdD') selected=mois.key labelAttr="label" nameAttr="value" valueAttr="value"}} {{selectOptions (RDD_CONFIG 'heuresRdD') selected=mois.key labelAttr="label" nameAttr="value" valueAttr="value"}}
</select> </select>
{{timestamp-imgSigne mois}} {{timestamp-imgSigne mois}}
<input {{#if disabled}}{{disabled}}{{/if}} type="number" class="number-x2" name="{{path}}.annee" value="{{annee}}" data-dtype="Number"/> <input name="{{path}}.annee" class="number-x2" type="number" data-dtype="Number" value="{{annee}}" {{#if disabled}}{{disabled}}{{/if}} />
</div> </div>
<div class="flexrow"> <div class="flexrow">
<label></label> <label></label>
@@ -18,7 +17,7 @@
{{selectOptions (RDD_CONFIG 'heuresRdD') selected=heure.key labelAttr="label" nameAttr="value" valueAttr="value"}} {{selectOptions (RDD_CONFIG 'heuresRdD') selected=heure.key labelAttr="label" nameAttr="value" valueAttr="value"}}
</select> </select>
{{timestamp-imgSigne heure}} {{timestamp-imgSigne heure}}
<input {{#if disabled}}{{disabled}}{{/if}} type="number" class="number-x2" name="{{path}}.minute" value="{{minute}}" data-dtype="Number"/> <input name="{{path}}.minute" class="number-x2" type="number" data-dtype="Number" value="{{minute}}" {{#if disabled}}{{disabled}}{{/if}}/>
<label>minutes</label> <label>minutes</label>
</div> </div>
</div> </div>

View File

@@ -6,9 +6,7 @@
<hr> <hr>
<span> <span>
<label>Points à répartir:</label> <label>Points à répartir:</label>
<input class="xpCarac-reste number-x2" <input class="xpCarac-reste number-x2" type="number" data-dtype="Number" value="{{xpData.reste}}" disabled />
type="number" data-dtype="Number"
min="0" max="10" value="{{xpData.reste}}" disabled />
<label> sur {{xpData.xpCarac}}</label> <label> sur {{xpData.xpCarac}}</label>
</span> </span>
<ul class="flexcol item-list alterne-list"> <ul class="flexcol item-list alterne-list">
@@ -32,7 +30,7 @@
<label>{{carac.xp}}</label> <label>{{carac.xp}}</label>
<span class="flexrow"> <span class="flexrow">
<a class="xpCarac-moins"><i class="fa-solid fa-square-minus"></i></a> <a class="xpCarac-moins"><i class="fa-solid fa-square-minus"></i></a>
<input class="xpCarac-view-ajout" value="{{carac.ajout}}" type="number" max="99" disabled/> <input class="xpCarac-view-ajout" value="{{carac.ajout}}" type="number" disabled/>
<a class="xpCarac-plus"><i class="fa-solid fa-square-plus"></i></a> <a class="xpCarac-plus"><i class="fa-solid fa-square-plus"></i></a>
</span> </span>
{{/if}} {{/if}}

View File

@@ -9,19 +9,22 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="signe.system.difficulte">Difficulte</label> <label for="signe.system.difficulte">Difficulte</label>
<input type="number" name="signe.system.difficulte" value="{{signe.system.difficulte}}" data-dtype="Number" /> <input type="number" data-dtype="Number" name="signe.system.difficulte" value="{{signe.system.difficulte}}" min=""-10" max="0"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="signe.system.valeur.norm">Expérience en sorts</label> <label for="signe.system.valeur.norm">Expérience en sorts</label>
<div class="flexrow"> <div class="flexrow">
<input class="signe-xp-sort" type="number" name="signe.system.valeur.norm" data-typereussite="norm" <input class="signe-xp-sort" type="number" data-dtype="Number"
value="{{signe.system.valeur.norm}}" min="1" max="100" data-dtype="Number" /> name="signe.system.valeur.norm" data-typereussite="norm"
value="{{signe.system.valeur.norm}}" min="1" max="100" />
<span>Sign.</span> <span>Sign.</span>
<input class="signe-xp-sort" type="number" name="signe.system.valeur.sign" data-typereussite="sign" <input class="signe-xp-sort" type="number" data-dtype="Number"
value="{{signe.system.valeur.sign}}" min="1" max="100" data-dtype="Number" /> name="signe.system.valeur.sign" data-typereussite="sign"
value="{{signe.system.valeur.sign}}" min="1" max="100"/>
<span>Part.</span> <span>Part.</span>
<input class="signe-xp-sort" type="number" name="signe.system.valeur.part" data-typereussite="part" <input class="signe-xp-sort" type="number" data-dtype="Number"
value="{{signe.system.valeur.part}}" min="1" max="100" data-dtype="Number" /> name="signe.system.valeur.part" data-typereussite="part"
value="{{signe.system.valeur.part}}" min="1" max="100"/>
</div> </div>
</div> </div>
<div class="form-group flexrow"> <div class="form-group flexrow">

View File

@@ -5,7 +5,7 @@
<div class="form-group"> <div class="form-group">
<label>Nombre de brins</label> <label>Nombre de brins</label>
<select name="nbBrins" data-dtype="number"> <select name="nbBrins" data-dtype="Number">
{{#select nbBrins}} {{#select nbBrins}}
{{{nbBrinsSelect}}} {{{nbBrinsSelect}}}
{{/select}} {{/select}}

View File

@@ -40,10 +40,10 @@
{{else}}Quantité{{/if}} {{else}}Quantité{{/if}}
</label> </label>
<div class="flexrow"> <div class="flexrow">
<input name="nombreLots" class="nombreLots flex-shrink number-x2" type="number" min="1" <input name="nombreLots" class="nombreLots flex-shrink number-x2"
{{#unless quantiteIllimite}} max="{{nbLots}}" {{/unless}} type="number" data-dtype="Number"
value="{{choix.nombreLots}}" value="{{choix.nombreLots}}" min="1" {{#unless quantiteIllimite}} max="{{nbLots}}" {{/unless}}
data-dtype="Number" /> />
</div> </div>
</div> </div>

View File

@@ -3,8 +3,9 @@
<h4>{{item.name}}</h4> <h4>{{item.name}}</h4>
<div class="flexrow"> <div class="flexrow">
<label class="flex-grow">Quantité à {{#if item.system.boisson}}boire{{else}}manger{{/if}}</label> <label class="flex-grow">Quantité à {{#if item.system.boisson}}boire{{else}}manger{{/if}}</label>
<input class="attribute-value consommer-doses flex-shrink number-x2" type="number" name="doses" value="{{choix.doses}}" <input name="doses"
min="0" max="{{item.system.quantite}}" data-dtype="Number" /> class="attribute-value consommer-doses flex-shrink number-x2" type="number" data-dtype="Number"
value="{{choix.doses}}" min="0" max="{{item.system.quantite}}" />
</div> </div>
{{#if item.system.sust}} {{#if item.system.sust}}
<p>Cette {{#if item.system.boisson}}boisson{{else}}nourriture{{/if}} vous apportera <span <p>Cette {{#if item.system.boisson}}boisson{{else}}nourriture{{/if}} vous apportera <span

View File

@@ -4,8 +4,8 @@
<label>Quantité totale : {{item.system.quantite}}</label> <label>Quantité totale : {{item.system.quantite}}</label>
<div class="flexrow"> <div class="flexrow">
<label class="flex-grow">Quantité à séparer</label> <label class="flex-grow">Quantité à séparer</label>
<input class="attribute-value choix-quantite flex-shrink number-x2" type="number" name="choix.quantite" value="{{choix.quantite}}" <input name="choix.quantite" class="attribute-value choix-quantite flex-shrink number-x2" type="number" data-dtype="Number"
min="1" max="{{choix.max}}" data-dtype="Number" /> value="{{choix.quantite}}" min="1" max="{{choix.max}}" />
</div> </div>
</form> </form>

View File

@@ -18,15 +18,15 @@
quantiteIllimite}}checked{{/if}} /> quantiteIllimite}}checked{{/if}} />
<label class="label-quantiteIllimite flex-shrink">disponibles</label> <label class="label-quantiteIllimite flex-shrink">disponibles</label>
{{/unless}} {{/unless}}
<input name="nbLots" class="nbLots flex-shrink number-x2" type="number" min="1" <input name="nbLots" class="nbLots flex-shrink number-x2" type="number" data-dtype="Number"
max="{{maxLots}}" value="{{nbLots}}" data-dtype="Number" /> value="{{nbLots}}" min="1" max="{{maxLots}}" />
</div> </div>
</div> </div>
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
<label for="tailleLot">Taille d'un lot</label> <label for="tailleLot">Taille d'un lot</label>
<span class="flexrow"> <span class="flexrow">
<input name="tailleLot" class="tailleLot flex-shrink number-x2" type="number" min="1" <input name="tailleLot" class="tailleLot flex-shrink number-x2" type="number" data-dtype="Number"
max="{{quantiteMax}}" value="{{tailleLot}}" data-dtype="Number" /> value="{{tailleLot}}" min="1" max="{{quantiteMax}}" />
</span> </span>
</div> </div>
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
@@ -36,8 +36,8 @@
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
<label for="prixLot">Prix du lot</label> <label for="prixLot">Prix du lot</label>
<span class="flexrow"> <span class="flexrow">
<input name="prixLot" class="prixLot flex-shrink number-x3" type="number" value="{{numberFormat prixLot decimals=2 sign=false}}" <input name="prixLot" class="prixLot flex-shrink number-x3" type="number" data-dtype="Number"
data-dtype="Number" /> value="{{numberFormat prixLot decimals=2 sign=false}}" min="0" />
<label>Sols</label> <label>Sols</label>
</span> </span>
</div> </div>

View File

@@ -1,7 +1,7 @@
<form class="encaisse-roll-dialog"> <form class="encaisse-roll-dialog">
<div class="flexrow"> <div class="flexrow">
<label>Modificateurs aux Dommages:</label> <label>Modificateurs aux Dommages:</label>
<select class="competence-value flex-shrink" name="modificateurDegats" data-dtype="number"> <select class="competence-value flex-shrink" name="modificateurDegats" data-dtype="Number">
{{#select modificateurDegats}} {{#select modificateurDegats}}
{{#each ajustementsEncaissement as |key|}} {{#each ajustementsEncaissement as |key|}}
<option value={{key}}>{{plusMoins key}}</option> <option value={{key}}>{{plusMoins key}}</option>

View File

@@ -6,7 +6,7 @@
<label>Etat général</label><label class="flexrow">{{etat}}</label> <label>Etat général</label><label class="flexrow">{{etat}}</label>
<label>Déjà bu</label><label class="flexrow">{{diffNbDoses}}</label> <label>Déjà bu</label><label class="flexrow">{{diffNbDoses}}</label>
<label>Force du breuvage</label> <label>Force du breuvage</label>
<select class="force-alcool" data-dtype="number"> <select class="force-alcool" data-dtype="Number">
{{#select forceAlcool}} {{#select forceAlcool}}
{{#each ajustementsForce as |key|}} {{#each ajustementsForce as |key|}}
<option value={{key}}>{{key}}</option> <option value={{key}}>{{key}}</option>

View File

@@ -16,7 +16,8 @@
</div> </div>
<div class="flexrow"> <div class="flexrow">
<label for="proportions">Proportions: </label> <label for="proportions">Proportions: </label>
<input class="cuisine-proportions" type="number" size="4" name="proportions" value="{{proportions}}" data-dtype="Number" /> <input name="proportions" class="cuisine-proportions" type="number" data-dtype="Number" size="4"
value="{{proportions}}" min="1"/>
</div> </div>
<div class="flexrow"> <div class="flexrow">
<label for="ajouterEquipement">Ajouter à l'équipement</label> <label for="ajouterEquipement">Ajouter à l'équipement</label>

View File

@@ -23,7 +23,7 @@
</div> </div>
<div class="flexrow"> <div class="flexrow">
<label for="ptreve-variable">Points de Rêve: </label> <label for="ptreve-variable">Points de Rêve: </label>
<select name="ptreve-variable" class="div-sort-ptreve-var" data-dtype="number"> <select name="ptreve-variable" class="div-sort-ptreve-var" data-dtype="Number">
{{#select ptreve-variable}} {{#select ptreve-variable}}
{{#each coutreve as |cout key|}} {{#each coutreve as |cout key|}}
<option value={{cout}}>{{cout}}</option> <option value={{cout}}>{{cout}}</option>
@@ -51,7 +51,7 @@
</div> </div>
<div class="flexrow"> <div class="flexrow">
<label for="diffLibre">Difficulté</label> <label for="diffLibre">Difficulté</label>
<select name="diffLibre" class="div-sort-difficulte-var" data-dtype="number"> <select name="diffLibre" class="div-sort-difficulte-var" data-dtype="Number">
{{#select diffLibre}} {{#select diffLibre}}
{{#each difficultesLibres as |key|}} {{#each difficultesLibres as |key|}}
<option value={{key}}>{{plusMoins key}}</option> <option value={{key}}>{{plusMoins key}}</option>

View File

@@ -6,8 +6,9 @@
</div> </div>
<ul> <ul>
<li class="flexrow flex-group-left"> <li class="flexrow flex-group-left">
<label>Jet d'encaissement</label> <label for="jet-encaissement">Jet d'encaissement</label>
<input class="encaissement-roll-result" type="number" value="{{encaissement.roll.result}}" min="2" max="20" data-dtype="Number" /> <input name="jet-encaissement" class="encaissement-roll-result" type="number" data-dtype="Number"
value="{{encaissement.roll.result}}" min="2" max="20" />
</li> </li>
<li class="flexrow flex-group-left"> <li class="flexrow flex-group-left">
<label>Total</label> <label>Total</label>

View File

@@ -7,23 +7,23 @@
{{#if system.magique}} {{#if system.magique}}
<div class="form-group"> <div class="form-group">
<label for="system.pr">Points de rêve</label> <label for="system.pr">Points de rêve</label>
<input class="attribute-value" type="text" name="system.pr" value="{{system.pr}}" data-dtype="Number" /> <input name="system.pr" class="attribute-value" type="number" data-dtype="Number" value="{{system.pr}}" min="0" max="777"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.purifie">Purifiée</label> <label for="system.purifie">Purifiée</label>
<input class="attribute-value" type="checkbox" name="system.purifie" {{#if system.purifie}}checked{{/if}}/> <input name="system.purifie" class="attribute-value" type="checkbox" {{#if system.purifie}}checked{{/if}}/>
<label></label> <label></label>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.prpermanent">Permanente</label> <label for="system.prpermanent">Permanente</label>
<input class="attribute-value" type="checkbox" name="system.prpermanent" {{#if system.prpermanent}}checked{{/if}}/> <input name="system.prpermanent" class="attribute-value" type="checkbox" {{#if system.prpermanent}}checked{{/if}}/>
<label></label> <label></label>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="enchantement.jour">Date de l'Enchantement : Jour/Mois (date actuelle : {{dateActuelle}})</label> <label for="enchantement.jour">Date de l'Enchantement : Jour/Mois (date actuelle : {{dateActuelle}})</label>
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="number" name="enchantement.jour" class="date-enchantement" value="{{enchantement.jour}}" data-dtype="Number" min="1" max="28"/> <input name="enchantement.jour" class="date-enchantement" type="number" data-dtype="Number" value="{{enchantement.jour}}" min="1" max="28"/>
<select name="enchantement.mois" class="date-enchantement" data-dtype="String"> <select name="enchantement.mois" class="date-enchantement" data-dtype="String">
{{#select enchantement.mois}} {{#select enchantement.mois}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.hbs"}}

View File

@@ -48,7 +48,7 @@
<div class="form-group"> <div class="form-group">
<label for="system.resistance">Résistance</label> <label for="system.resistance">Résistance</label>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/icon-arme-broken.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/icon-arme-broken.hbs"}}
<input class="attribute-value" type="text" name="system.resistance" value="{{system.resistance}}" data-dtype="Number"/> <input name="system.resistance" class="attribute-value" type="number" data-dtype="Number" value="{{system.resistance}}" min="0"/>
</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>
@@ -60,47 +60,47 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.force">Force min. </label> <label for="system.force">Force min. </label>
<input class="attribute-value" type="text" name="system.force" value="{{system.force}}" data-dtype="String"/> <input name="system.force" class="attribute-value" type="text" data-dtype="String" value="{{system.force}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.rapide">Arme rapide ? </label> <label for="system.rapide">Arme rapide ? </label>
<input class="attribute-value" type="checkbox" name="system.rapide" {{#if system.rapide}}checked{{/if}}/> <input name="system.rapide" class="attribute-value" type="checkbox" {{#if system.rapide}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.unemain">A Une main ? </label> <label for="system.unemain">A Une main ? </label>
<input class="attribute-value" type="checkbox" name="system.unemain" {{#if system.unemain}}checked{{/if}}/> <input name="system.unemain" class="attribute-value" type="checkbox" {{#if system.unemain}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.deuxmains">A Deux mains ? </label> <label for="system.deuxmains">A Deux mains ? </label>
<input class="attribute-value" type="checkbox" name="system.deuxmains" {{#if system.deuxmains}}checked{{/if}}/> <input name="system.deuxmains" class="attribute-value" type="checkbox" {{#if system.deuxmains}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.portee_courte">Portée courte </label> <label for="system.portee_courte">Portée courte </label>
<input class="attribute-value" type="text" name="system.portee_courte" value="{{system.portee_courte}}" data-dtype="Number"/> <input name="system.portee_courte" class="attribute-value" type="text" data-dtype="Number" value="{{system.portee_courte}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.portee_moyenne">Portée moyenne </label> <label for="system.portee_moyenne">Portée moyenne </label>
<input class="attribute-value" type="text" name="system.portee_moyenne" value="{{system.portee_moyenne}}" data-dtype="Number"/> <input name="system.portee_moyenne" class="attribute-value" type="text" data-dtype="Number" value="{{system.portee_moyenne}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.portee_extreme">Portée extrême </label> <label for="system.portee_extreme">Portée extrême </label>
<input class="attribute-value" type="text" name="system.portee_extreme" value="{{system.portee_extreme}}" data-dtype="Number"/> <input name="system.portee_extreme" class="attribute-value" type="text" data-dtype="Number" value="{{system.portee_extreme}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.penetration">Pénétration </label> <label for="system.penetration">Pénétration </label>
<input class="attribute-value" type="text" name="system.penetration" value="{{system.penetration}}" data-dtype="Number"/> <input name="system.penetration" class="attribute-value" type="text" data-dtype="Number" value="{{system.penetration}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.magique">Magique ? </label> <label for="system.magique">Magique ? </label>
<input class="attribute-value" type="checkbox" name="system.magique" {{#if system.magique}}checked{{/if}}/> <input name="system.magique" class="attribute-value" type="checkbox"{{#if system.magique}}checked{{/if}}/>
</div> </div>
<div class="form-group item-magique"> <div class="form-group item-magique">
<label for="system.resistance_magique">Résistance magique </label> <label for="system.resistance_magique">Résistance magique </label>
<input class="attribute-value" type="text" name="system.resistance_magique" value="{{system.resistance_magique}}" data-dtype="Number"/> <input name="system.resistance_magique" class="attribute-value" type="text" data-dtype="Number" value="{{system.resistance_magique}}" />
</div> </div>
<div class="form-group item-magique"> <div class="form-group item-magique">
<label for="system.ecaille_efficacite">Nombre d'Ecailles d'Efficacité </label> <label for="system.ecaille_efficacite">Nombre d'Ecailles d'Efficacité </label>
<input class="attribute-value" type="text" name="system.ecaille_efficacite" value="{{system.ecaille_efficacite}}" data-dtype="Number"/> <input name="system.ecaille_efficacite" class="attribute-value" type="text" data-dtype="Number" value="{{system.ecaille_efficacite}}" />
</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>

View File

@@ -9,15 +9,15 @@
<div class="form-group"> <div class="form-group">
<label for="system.protection">Protection</label> <label for="system.protection">Protection</label>
<input class="attribute-value" type="text" name="system.protection" value="{{system.protection}}" data-dtype="String"/> <input name="system.protection" class="attribute-value" type="text" data-dtype="String" value="{{system.protection}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.deterioration">Détérioration</label> <label for="system.deterioration">Détérioration</label>
<input class="attribute-value" type="text" name="system.deterioration" value="{{system.deterioration}}" data-dtype="Number"/> <input name="system.deterioration" class="attribute-value" type="text" data-dtype="Number" value="{{system.deterioration}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.malus">Malus Armure </label> <label for="system.malus">Malus Armure </label>
<input class="attribute-value" type="text" name="system.malus" value="{{system.malus}}" data-dtype="Number"/> <input name="system.malus" class="attribute-value" type="text" data-dtype="Number" value="{{system.malus}}" />
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs"}}

View File

@@ -15,39 +15,44 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.localisation">Localisation</label> <label for="system.localisation">Localisation</label>
<input class="attribute-value" type="text" name="system.localisation" value="{{system.localisation}}" data-dtype="String"/> <input name="system.localisation" class="attribute-value" type="text" data-dtype="String" value="{{system.localisation}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.origine">Causée par</label> <label for="system.origine">Causée par</label>
<input class="attribute-value" type="text" name="system.origine" value="{{system.origine}}" data-dtype="String"/> <input name="system.origine" class="attribute-value" type="text" data-dtype="String" value="{{system.origine}}" />
</div> </div>
{{#if (lt system.gravite 7)}} {{#if (lt system.gravite 7)}}
<div class="form-group"> <div class="form-group">
<label for="system.difficulte">Difficulté des soins</label> <label for="system.difficulte">Difficulté des soins</label>
<input class="attribute-value number-x" type="text" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/> <input name="system.difficulte" class="attribute-value number-x" type="text" data-dtype="Number" value="{{system.difficulte}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="premierssoins-done">Premiers soins <label for="premierssoins-done">Premiers soins
<input class="attribute-value" type="checkbox" name="premierssoins-done" {{#if system.premierssoins.done}}checked{{/if}}/> <input name="premierssoins-done" class="attribute-value" type="checkbox" {{#if system.premierssoins.done}}checked{{/if}}/>
</label> </label>
{{#if system.premierssoins.done}} {{#if system.premierssoins.done}}
{{#unless system.soinscomplets.done}} {{#unless system.soinscomplets.done}}
<input class="attribute-value number-x" type="text" name="system.premierssoins.bonus" value="{{system.premierssoins.bonus}}" data-dtype="Number"/> <label for="system.premierssoins.bonus">Bonus soins complets
<input name="system.premierssoins.bonus" class="attribute-value number-x" type="number" data-dtype="Number"
value="{{system.premierssoins.bonus}}" min="-6" max="2"/>
</label>
{{/unless}} {{/unless}}
{{else}} {{else}}
<label for="system.premierssoins.tache">Points de tâches</label> <label for="system.premierssoins.tache">Points de tâches</label>
<input class="attribute-value number-x" type="text" name="system.premierssoins.tache" value="{{system.premierssoins.tache}}" data-dtype="Number"/> <input name="system.premierssoins.tache" class="attribute-value number-x" type="number" data-dtype="Number"
value="{{system.premierssoins.tache}}" min="-4" max="6"/>
{{/if}} {{/if}}
</div> </div>
{{#if system.premierssoins.done}} {{#if system.premierssoins.done}}
<div class="form-group"> <div class="form-group">
<label for="soinscomplets-done">Soins complets <label for="soinscomplets-done">Soins complets
<input class="attribute-value" type="checkbox" name="soinscomplets-done" {{#if system.soinscomplets.done}}checked{{/if}}/> <input name="soinscomplets-done" class="attribute-value" type="checkbox" {{#if system.soinscomplets.done}}checked{{/if}}/>
</label> </label>
{{#if system.soinscomplets.done}} {{#if system.soinscomplets.done}}
<input class="attribute-value number-x" type="text" name="system.soinscomplets.bonus" value="{{system.soinscomplets.bonus}}" data-dtype="Number"/> <input name="system.soinscomplets.bonus" class="attribute-value number-x" type="number" data-dtype="Number"
value="{{system.soinscomplets.bonus}}" min="0" max="3" />
{{/if}} {{/if}}
</div> </div>
{{/if}} {{/if}}

View File

@@ -3,8 +3,8 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="niveau">Coordonnées TMR </label> <label for="system.coord">Coordonnées TMR </label>
<input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/> <input name="system.coord" value="{{system.coord}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.specific">Mode spécifique</label> <label for="system.specific">Mode spécifique</label>

View File

@@ -3,12 +3,14 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.niveau">Niveau</label> <label for="system.niveau" class="item-label">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input name="system.niveau" class="attribute-value" type="text" data-dtype="Number"
value="{{system.niveau}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.reference">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 name="system.reference" class="attribute-value" type="text" data-dtype="String"
value="{{system.reference}}" />
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}}

View File

@@ -24,11 +24,13 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.niveau">Niveau </label> <label for="system.niveau">Niveau </label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input name="system.niveau" class="attribute-value" type="number" data-dtype="Number"
value="{{system.niveau}}" min="-11"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.xp">XP </label> <label for="system.xp">XP </label>
<input class="attribute-value sheet-competence-xp" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/> <input name="system.xp" class="attribute-value sheet-competence-xp" type="text" data-dtype="Number"
value="{{system.xp}}" min="0"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.base">Niveau de base </label> <label for="system.base">Niveau de base </label>
@@ -52,21 +54,23 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.default_diffLibre">Difficulté libre par défaut</label> <label for="system.default_diffLibre">Difficulté libre par défaut</label>
<input class="attribute-value" type="text" name="system.default_diffLibre" value="{{system.default_diffLibre}}" data-dtype="Number"/> <input name="system.default_diffLibre" class="attribute-value" type="number" data-dtype="Number"
value="{{system.default_diffLibre}}" min="-10" max="0"/>
</div> </div>
{{#if (eq system.categorie 'draconic')}} {{#if (eq system.categorie 'draconic')}}
<div class="form-group"> <div class="form-group">
<label for="system.xp_sort">XP Sort </label> <label for="system.xp_sort">XP Sort </label>
<input class="attribute-value" type="text" name="system.xp_sort" value="{{system.xp_sort}}" data-dtype="Number"/> <input name="system.xp_sort" class="attribute-value" type="text" data-dtype="Number"
value="{{system.xp_sort}}" min="0"/>
</div> </div>
{{/if}} {{/if}}
<div class="form-group"> <div class="form-group">
<label for="system.niveau_archetype">Niveau d'Archetype</label> <label for="system.niveau_archetype">Niveau d'Archetype</label>
<input class="attribute-value" type="text" name="system.niveau_archetype" value="{{system.niveau_archetype}}" data-dtype="Number"/> <input name="system.niveau_archetype" class="attribute-value" type="text" data-dtype="Number"
value="{{system.niveau_archetype}}" min="0" />
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs"}}
</section> </section>
</form> </form>

View File

@@ -12,20 +12,24 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="niveau">Valeur de Caractéristique</label> <label for="niveau">Valeur de Caractéristique</label>
<input class="attribute-value" type="text" name="system.carac_value" value="{{system.carac_value}}" data-dtype="Number"/> <input name="system.carac_value" class="attribute-value" type="text" data-dtype="Number"
value="{{system.carac_value}}" min="0"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="niveau">Niveau</label> <label for="niveau">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input name="system.niveau" class="attribute-value" type="text" data-dtype="Number"
value="{{system.niveau}}" min="-11"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="default_diffLibre">Difficulté libre par défaut</label> <label for="default_diffLibre">Difficulté libre par défaut</label>
<input class="attribute-value" type="text" name="system.default_diffLibre" value="{{system.default_diffLibre}}" data-dtype="Number"/> <input name="system.default_diffLibre" class="attribute-value" type="number" data-dtype="Number"
value="{{system.default_diffLibre}}" min="-10" max="0"/>
</div> </div>
{{#if isdommages}} {{#if isdommages}}
<div class="form-group"> <div class="form-group">
<label for="niveau">Dommages (+dom)</label> <label for="niveau">Dommages (+dom)</label>
<input class="attribute-value" type="text" name="system.dommages" value="{{system.dommages}}" data-dtype="Number"/> <input name="system.dommages" class="attribute-value" type="text" data-dtype="Number"
value="{{system.dommages}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.mortalite">Mortalité</label> <label for="system.mortalite">Mortalité</label>

View File

@@ -10,7 +10,8 @@
<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.capacite">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 name="system.capacite" class="attribute-value" type="number" data-dtype="Number"
value="{{system.capacite}}"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}
{{#if options.isOwned}} {{#if options.isOwned}}
@@ -20,7 +21,7 @@
<span class="equipement-nom">Nom</span> <span class="equipement-nom">Nom</span>
<span class="equipement-detail">Q.</span> <span class="equipement-detail">Q.</span>
<span class="equipement-detail">Enc.</span> <span class="equipement-detail">Enc.</span>
<span class="equipement-actions">Actions</span> <span class="item-actions-controls">Actions</span>
</li> </li>
{{buildInventaireConteneur actorId id options}} {{buildInventaireConteneur actorId id options}}
</ul> </ul>

View File

@@ -12,20 +12,22 @@
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.agilite">Agilité ?</label> <label for="system.agilite" class="item-label" >Agilité ?</label>
<input class="attribute-value" type="checkbox" name="system.agilite" {{#if system.agilite}}checked{{/if}}/> <input name="system.agilite" class="attribute-value" type="checkbox" {{#if system.agilite}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.apparence">Apparence ?</label> <label for="system.apparence" class="item-label">Apparence ?</label>
<input class="attribute-value" type="checkbox" name="system.apparence" {{#if system.apparence}}checked{{/if}}/> <input name="system.apparence" class="attribute-value" type="checkbox" {{#if system.apparence}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.niveau">Niveau</label> <label for="system.niveau" class="item-label">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input name="system.niveau" class="attribute-value" type="text" data-dtype="Number"
value="{{system.niveau}}" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.reference">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 name="system.reference" class="attribute-value" type="text" data-dtype="String"
value="{{system.reference}}"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}}

View File

@@ -4,11 +4,11 @@
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="system.pointsemp">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 name="system.pointsemp" class="attribute-value" type="number" data-dtype="Number" value="{{system.pointsemp}}" min="-2" max="2"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.immobilise">Immobilisé </label> <label for="system.immobilise">Immobilisé </label>
<input type="checkbox" name="system.immobilise" {{#if system.immobilise}}checked{{/if}}/> <input name="system.immobilise" type="checkbox" {{#if system.immobilise}}checked{{/if}}/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-description.hbs"}}
</section> </section>

View File

@@ -17,12 +17,13 @@
<div class="flexcol"> <div class="flexcol">
<div class="form-group"> <div class="form-group">
<label for="system.sust">Sustentation (si applicable)</label> <label for="system.sust">Sustentation (si applicable)</label>
<input class="attribute-value" type="number" name="system.sust" value="{{system.sust}}" data-dtype="Number" min="0"/> <input name="system.sust" class="attribute-value" type="number" data-dtype="Number"
value="{{system.sust}}" min="0"/>
</div> </div>
{{#if (gt system.sust 0)}} {{#if (gt system.sust 0)}}
<div class="form-group"> <div class="form-group">
<label for="system.exotisme">Exotisme</label> <label for="system.exotisme">Exotisme</label>
<input class="attribute-value" type="number" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number" min="-10" max="0"/> <input name="system.exotisme" class="attribute-value" type="number" data-dtype="Number" value="{{system.exotisme}}" min="-10" max="0"/>
</div> </div>
{{/if}} {{/if}}
<div class="form-group"> <div class="form-group">

View File

@@ -1,4 +1,3 @@
{{log this}}
<form class="{{cssClass}}" autocomplete="off"> <form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header"> <header class="sheet-header">
<img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}"/> <img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}"/>
@@ -27,20 +26,20 @@
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Taille</label> <label for="system.taille">Taille</label>
<input class="attribute-value" type="text" name="system.taille" value="{{system.taille}}" data-dtype="Number" /> <input name="system.taille" value="{{system.taille}}" min="1" class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Pureté</label> <label for="system.purete">Pureté</label>
<input class="attribute-value" type="text" name="system.purete" value="{{system.purete}}" data-dtype="Number" /> <input name="system.purete" value="{{system.purete}}" min="0" max="7" class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Inertie</label> <label>Inertie</label>
<input class="attribute-value" type="text" name="system.inertie" value="{{system.inertie}}" data-dtype="Number" disabled/> <input name="system.inertie" value="{{system.inertie}}" class="attribute-value" type="text" data-dtype="Number" disabled/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Enchantabilité</label> <label>Enchantabilité</label>
<input class="attribute-value" type="text" name="system.enchantabilite" value="{{system.enchantabilite}}" data-dtype="Number" disabled/> <input name="system.enchantabilite" value="{{system.enchantabilite}}" class="attribute-value" type="text" data-dtype="Number" disabled/>
</div> </div>
{{>'systems/foundryvtt-reve-de-dragon/templates/enchantement/partial-enchantement.hbs'}} {{>'systems/foundryvtt-reve-de-dragon/templates/enchantement/partial-enchantement.hbs'}}
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}

View File

@@ -31,16 +31,19 @@
{{#if (eq isComestible 'brut')}} {{#if (eq isComestible 'brut')}}
<div class="form-group"> <div class="form-group">
<label for="system.sust">Sustentation</label> <label for="system.sust">Sustentation</label>
<input class="attribute-value" type="number" name="system.sust" value="{{system.sust}}" data-dtype="Number" min="0"/> <input name="system.sust" value="{{system.sust}}" min="0"
class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.exotisme">Exotisme</label> <label for="system.exotisme">Exotisme</label>
<input class="attribute-value" type="number" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number" min="-10" max="0"/> <input name="system.exotisme" value="{{system.exotisme}}" min="-10" max="0"
class="attribute-value" type="number" data-dtype="Number"/>
</div> </div>
{{else}} {{else}}
<div class="form-group"> <div class="form-group">
<label>Niveau (si applicable)</label> <label>Niveau (si applicable)</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number" /> <input name="system.niveau" value="{{system.niveau}}"
class="attribute-value" type="text" data-dtype="Number" />
</div> </div>
{{/if}} {{/if}}

View File

@@ -10,7 +10,7 @@
<div class="tab items" data-group="primary" data-tab="informations"> <div class="tab items" data-group="primary" data-tab="informations">
<div class="form-group"> <div class="form-group">
<label>Niveau (si applicable) </label> <label>Niveau (si applicable) </label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number" /> <input name="system.niveau" value="{{system.niveau}}" class="attribute-value" type="text" data-dtype="Number" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Catégorie</label> <label>Catégorie</label>

View File

@@ -2,14 +2,14 @@
<header class="sheet-header"> <header class="sheet-header">
<img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}"/> <img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}"/>
<div class="header-fields"> <div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1> <h1 class="charname"><input name="name" value="{{name}}" type="text" placeholder="Name"/></h1>
<div class="resource"> <div class="resource">
<label>Quantity</label> <label for="system.quantity">Quantity</label>
<input type="text" name="system.quantity" value="{{system.quantity}}" data-dtype="Number"/> <input name="system.quantity" value="{{system.quantity}}" type="text" data-dtype="Number"/>
</div> </div>
<div class="resource"> <div class="resource">
<label>Weight</label> <label for="system.weight">Weight</label>
<input type="text" name="system.weight" value="{{system.weight}}" data-dtype="Number"/> <input name="system.weight" value="{{system.weight}}" type="text" data-dtype="Number"/>
</div> </div>
</div> </div>
</header> </header>
@@ -39,13 +39,13 @@
<ol class="attributes-list"> <ol class="attributes-list">
{{#each system.attributes as |attr key|}} {{#each system.attributes as |attr key|}}
<li class="attribute flexrow" data-attribute="{{key}}"> <li class="attribute flexrow" data-attribute="{{key}}">
<input class="attribute-key" type="text" name="system.attributes.{{key}}.key" value="{{key}}"/> <input name="system.attributes.{{key}}.key" value="{{key}}" class="attribute-key" type="text"/>
{{#if attr.isCheckbox}} {{#if attr.isCheckbox}}
<label class="attribute-value checkbox"><input type="checkbox" name="system.attributes.{{key}}.value" {{checked attr.value}}/></label> <label class="attribute-value checkbox"><input name="system.attributes.{{key}}.value" type="checkbox" {{checked attr.value}}/></label>
{{else}} {{else}}
<input class="attribute-value" type="text" name="system.attributes.{{key}}.value" value="{{attr.value}}" data-dtype="{{attr.dtype}}"/> <input name="system.attributes.{{key}}.value" value="{{attr.value}}" class="attribute-value" type="text" data-dtype="{{attr.dtype}}"/>
{{/if}} {{/if}}
<input class="attribute-label" type="text" name="system.attributes.{{key}}.label" value="{{attr.label}}"/> <input name="system.attributes.{{key}}.label" value="{{attr.label}}" class="attribute-label" type="text"/>
<select class="attribute-dtype" name="system.attributes.{{key}}.dtype"> <select class="attribute-dtype" name="system.attributes.{{key}}.dtype">
{{#select attr.dtype}} {{#select attr.dtype}}
{{#each ../dtypes as |t|}} {{#each ../dtypes as |t|}}

View File

@@ -15,16 +15,16 @@
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.base">Base</label> <label for="system.base" class="item-label">Base</label>
<input class="attribute-value" type="text" name="system.base" value="{{system.base}}" data-dtype="Number"/> <input name="system.base" value="{{system.base}}" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.caraccomp">Caractéristique/Compétence</label> <label for="system.caraccomp" class="item-label">Caractéristique/Compétence</label>
<input class="attribute-value" type="text" name="system.caraccomp" value="{{system.caraccomp}}" data-dtype="String"/> <input name="system.caraccomp" value="{{system.caraccomp}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.reference">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 name="system.reference" value="{{system.reference}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}}

View File

@@ -19,7 +19,7 @@
<div class="form-group"> <div class="form-group">
<label for="system.auteur">Auteur</label> <label for="system.auteur">Auteur</label>
<input class="attribute-value" type="text" name="system.auteur" value="{{system.auteur}}" data-dtype="String"/> <input name="system.auteur" value="{{system.auteur}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.competence">Compétence</label> <label for="system.competence">Compétence</label>
@@ -31,23 +31,26 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.difficulte">Difficulté</label> <label for="system.difficulte">Difficulté</label>
<input class="attribute-value" type="number" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/> <input name="system.difficulte" value="{{system.difficulte}}" min="-10" max="0"
class="attribute-value" type="number" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.points_de_tache">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 name="system.points_de_tache" value="{{system.points_de_tache}}" min="0"
class="attribute-value" type="number" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.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 name="system.xp" value="{{system.xp}}" min="0"
class="attribute-value" type="number" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.niveau_minimum">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 name="system.niveau_minimum" value="{{system.niveau_minimum}}" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.niveau_maximum">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 name="system.niveau_maximum" value="{{system.niveau_maximum}}" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}

View File

@@ -19,27 +19,27 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.malignite">Malignité </label> <label for="system.malignite">Malignité </label>
<input class="attribute-value" type="text" name="system.malignite" value="{{system.malignite}}" data-dtype="Number"/> <input name="system.malignite" value="{{system.malignite}}" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.incubation">Incubation</label> <label for="system.incubation">Incubation</label>
<input class="attribute-value" type="text" name="system.incubation" value="{{system.incubation}}" data-dtype="String"/> <input name="system.incubation" value="{{system.incubation}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
{{>"systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs" system.periode path='system.periode' label='Périodicité'}} {{>"systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs" system.periode path='system.periode' label='Périodicité'}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.dommages">Dommages</label> <label for="system.dommages">Dommages</label>
<input class="attribute-value" type="text" name="system.dommages" value="{{system.dommages}}" data-dtype="String"/> <input name="system.dommages" value="{{system.dommages}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.remedesconnus">Remedes Connus ? </label> <label for="system.remedesconnus">Remedes Connus ? </label>
<input class="attribute-value" type="checkbox" name="system.remedesconnus" {{#if system.remedesconnus}}checked{{/if}}/> <input name="system.remedesconnus" class="attribute-value" type="checkbox" {{#if system.remedesconnus}}checked{{/if}}/>
</div> </div>
{{#if (or options.isGM system.remedesconnus)}} {{#if (or options.isGM system.remedesconnus)}}
<div class="form-group"> <div class="form-group">
<label for="system.remedes">Remèdes </label> <label for="system.remedes">Remèdes </label>
<input class="attribute-value" type="text" name="system.remedes" value="{{system.remedes}}" data-dtype="String"/> <input name="system.remedes" value="{{system.remedes}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}

View File

@@ -12,11 +12,11 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.theme">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 name="system.theme" value="{{system.theme}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.support">Support</label> <label for="system.support">Support</label>
<input class="attribute-value" type="text" name="system.support" value="{{system.support}}" data-dtype="String"/> <input name="system.support" value="{{system.support}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.heure">Heure</label> <label for="system.heure">Heure</label>
@@ -28,15 +28,15 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.purification">Purification</label> <label for="system.purification">Purification</label>
<input class="attribute-value" type="text" name="system.purification" value="{{system.purification}}" data-dtype="String"/> <input name="system.purification" value="{{system.purification}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.veture">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 name="system.veture" value="{{system.veture}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.comportement">Comportement</label> <label for="system.comportement">Comportement</label>
<input class="attribute-value" type="text" name="system.comportement" value="{{system.comportement}}" data-dtype="String"/> <input name="system.comportement" value="{{system.comportement}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.tmr">Case TMR</label> <label for="system.tmr">Case TMR</label>

View File

@@ -3,12 +3,12 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="item-label" for="system.niveau">Niveau</label> <label for="system.niveau" class="item-label" >Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input name="system.niveau" value="{{system.niveau}}" min="-10" max="0" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.reference">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 name="system.reference" value="{{system.reference}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}}

View File

@@ -4,19 +4,19 @@
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label for="system.value">Nombre</label> <label for="system.value">Nombre</label>
<input class="attribute-value" type="text" name="system.value" value="{{system.value}}" data-dtype="Number"/> <input name="system.value" value="{{system.value}}" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.istrue">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 name="system.istrue" class="attribute-value" type="checkbox" {{#if system.istrue}}checked{{/if}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.jourindex">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 name="system.jourindex" value="{{system.jourindex}}" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.jourlabel">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 name="system.jourlabel" value="{{system.jourlabel}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
</section> </section>
</form> </form>

View File

@@ -8,31 +8,31 @@
<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.sust">Sustentation</label> <label for="system.sust">Sustentation</label>
<input class="attribute-value" type="text" name="system.sust" value="{{system.sust}}" data-dtype="Number" /> <input name="system.sust" value="{{system.sust}}" class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.boisson">Boisson</label> <label for="system.boisson">Boisson</label>
<input class="attribute-value" type="checkbox" name="system.boisson" {{#if system.boisson}}checked{{/if}} /> <input name="system.boisson" class="attribute-value" type="checkbox" {{#if system.boisson}}checked{{/if}} />
</div> </div>
{{#if system.boisson}} {{#if system.boisson}}
<div class="form-group"> <div class="form-group">
<label for="system.desaltere">Désaltère de</label> <label for="system.desaltere">Désaltère de</label>
<input class="attribute-value" type="text" name="system.desaltere" value="{{system.desaltere}}" data-dtype="Number" /> <input name="system.desaltere" value="{{system.desaltere}}" class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.alcoolise">Alcoolisée</label> <label for="system.alcoolise">Alcoolisée</label>
<input class="attribute-value" type="checkbox" name="system.alcoolise" {{#if system.alcoolise}}checked{{/if}} /> <input name="system.alcoolise" class="attribute-value" type="checkbox" {{#if system.alcoolise}}checked{{/if}} />
</div> </div>
{{#if system.alcoolise}} {{#if system.alcoolise}}
<div class="form-group"> <div class="form-group">
<label>Force de l'alcool par dose</label> <label>Force de l'alcool par dose</label>
<input class="attribute-value" type="text" name="system.force" value="{{system.force}}" data-dtype="Number" /> <input name="system.force" value="{{system.force}}" min="-10" max="0" class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}
<div class="form-group"> <div class="form-group">
<label for="system.exotisme">Exotisme</label> <label for="system.exotisme">Exotisme</label>
<input class="attribute-value" type="text" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number" /> <input name="system.exotisme" value="{{system.exotisme}}" min="-10" max="0" class="attribute-value" type="number" data-dtype="Number" />
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}

View File

@@ -26,11 +26,11 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.reference">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 name="system.reference" value="{{system.reference}}" class="attribute-value" type="text" data-dtype="String"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.niveau">Niveau</label> <label for="system.niveau">Niveau</label>
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/> <input name="system.niveau" value="{{system.niveau}}" min="0" max="10" class="attribute-value" type="text" data-dtype="Number"/>
</div> </div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-appreciable.hbs"}}

View File

@@ -12,8 +12,8 @@
{{#if system.appreciation.moral}} {{#if system.appreciation.moral}}
<div class="form-group"> <div class="form-group">
<label for="system.appreciation.bonmoment">Bon moment</label> <label for="system.appreciation.bonmoment">Bon moment</label>
<input class="attribute-value" type="string" name="system.appreciation.bonmoment" value="{{system.appreciation.bonmoment}}" <input name="system.appreciation.bonmoment" value="{{system.appreciation.bonmoment}}"
data-dtype="String" list="enum-appreciation-bonmoment" class="attribute-value" type="string" data-dtype="String" list="enum-appreciation-bonmoment"
/> />
<datalist id="enum-appreciation-bonmoment"> <datalist id="enum-appreciation-bonmoment">
{{>"systems/foundryvtt-reve-de-dragon/templates/item/enum-appreciation-bonmoment.hbs"}} {{>"systems/foundryvtt-reve-de-dragon/templates/item/enum-appreciation-bonmoment.hbs"}}
@@ -37,18 +37,21 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.appreciation.jetComp">Utiliser la compétence pour le jet d'appréciation</label> <label for="system.appreciation.jetComp">Utiliser la compétence pour le jet d'appréciation</label>
<input class="attribute-value" type="checkbox" name="system.appreciation.jetComp" {{#if system.appreciation.jetComp}}checked{{/if}} <input name="system.appreciation.jetComp"
data-toolTip="La compétence est utilisée pour le jet d'appréciation si positive"/> class="attribute-value" type="checkbox" {{#if system.appreciation.jetComp}}checked{{/if}}
data-toolTip="La compétence est utilisée pour le jet d'appréciation si positive"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.appreciation.jetQualite">Utiliser la qualité pour le jet d'appréciation</label> <label for="system.appreciation.jetQualite">Utiliser la qualité pour le jet d'appréciation</label>
<input class="attribute-value" type="checkbox" name="system.appreciation.jetQualite" {{#if system.appreciation.jetQualite}}checked{{/if}} <input name="system.appreciation.jetQualite"
data-toolTip="La qualité ajuste le jet d'appréciation"/> class="attribute-value" type="checkbox" {{#if system.appreciation.jetQualite}}checked{{/if}}
data-toolTip="La qualité ajuste le jet d'appréciation"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.appreciation.compMinimum">Jet d'appréciation seulement si qualité &gt; compétence</label> <label for="system.appreciation.compMinimum">Jet d'appréciation seulement si qualité &gt; compétence</label>
<input class="attribute-value" type="checkbox" name="system.appreciation.compMinimum" {{#if system.appreciation.compMinimum}}checked{{/if}} <input name="system.appreciation.compMinimum"
data-toolTip="La qualité doit être supérieure à la compétence pour effectuer un jet d'apréciation"/> class="attribute-value" type="checkbox" {{#if system.appreciation.compMinimum}}checked{{/if}}
data-toolTip="La qualité doit être supérieure à la compétence pour effectuer un jet d'apréciation"/>
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}

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