Compare commits

...

38 Commits

Author SHA1 Message Date
3365852210 Merge pull request '11.2.18' (#696) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #696
2024-03-21 15:51:07 +01:00
d71bf27311 Version 11.2.18 - Le bourrichon d'Akarlikarlikar 2024-03-20 21:57:02 +01:00
e6da18bebd Ajout du bouton Montrer
Ajout du bouton Montrer dans les différentes listes
2024-03-20 21:55:18 +01:00
972ae74e2c Merge pull request '11.2.17 - Le cache-oeil d'Akarlikarlikar' (#695) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #695
2024-03-10 08:57:28 +01:00
7969e74c8d Version 11.2.17 2024-03-10 00:53:45 +01:00
84ea3a6ea9 Fix: TMR qui ne s'affichent pas
Après un certain temps (changements de scènes?), les TMR ne
s'affichaient plus correctement.

Tentative de forcer le chargement des textures manquantes lors
de l'ouverture de la fenêtre de TMR.
2024-03-10 00:47:50 +01:00
7ada5577aa Ajout de l'information Ombre de Thanatos
Si Thanatos a été utilisé, la prochaine queue est une ombre
Un indicateur apparait dans l'onglet Haut-Rêve.
2024-03-10 00:24:02 +01:00
b0e28ef937 Fix: labels for / id
- Ajout de "for" sur labels
- suppression d'id inutiles
- corrections de for="xp" incorrects
- simplification css alchimie-title/blessure-title
2024-03-10 00:13:36 +01:00
6414f76d67 Fix: ignorer personnages joueurs non liés
Pour les fenêtres de stress/repos/voyage/astrologie, ignorer
les personnages non liés (par exemple, un guerrier sorde)
2024-03-09 23:12:13 +01:00
dde3011f1d Fix: Checkbox cacher les points de tâche 2024-03-09 19:50:00 +01:00
6dbf322efe Fix: traduction tooltip Ediot/Delete 2024-03-09 19:49:31 +01:00
d34fde2ba4 Fix: titre des feuilles d'objets
Suite à la correction de l'ordre et du nom dans la fenêtre de création,
les titres étaient incorrects (TYPES.Item.Tache par exemple)
2024-03-09 19:48:53 +01:00
bc169d931b Fix: log erreur TMR en mode visu
En mode visualisation, les informations du personnage ne sont
pas affichées
2024-03-09 19:38:53 +01:00
3b269b2baa Simplifications 2024-03-09 19:13:13 +01:00
dffaa29fd1 Fix termes dans les fenetres de creation 2024-02-29 21:22:42 +01:00
c49e2a850b Fix termes dans les fenetres de creation 2024-02-29 20:59:06 +01:00
a5a9cc334e Fix termes dans les fenetres de creation 2024-02-29 20:45:25 +01:00
43e49a0eb8 New common CounterClass 2024-02-08 12:46:49 +01:00
5ab551da9e Rework usage log 2024-02-05 18:08:35 +01:00
2a9e98f8c7 Ajout tirage de la force des rencontres avec /tmrr, ajout de bouton pour appliquer complètement les blessures 2024-01-30 23:18:21 +01:00
669982ec4a Ajout tirage de la force des rencontres avec /tmrr, ajout de bouton pour appliquer complètement les blessures 2024-01-28 20:43:23 +01:00
34183cd1a7 Ajout tirage de la force des rencontres avec /tmrr, ajout de bouton pour appliquer complètement les blessures 2024-01-28 20:41:00 +01:00
f7eae3ac1e Fix version+changelog 2024-01-02 18:51:22 +01:00
623044c936 Sync fiche 2024-01-02 18:43:42 +01:00
94caf4040b Affichage souffle 2023-12-30 14:20:05 +01:00
d577e2d2ec Merge pull request '11.2.13 - Les cent pas d'Akarlikarlikar' (#694) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #694
2023-12-26 23:44:30 +01:00
050cd80dae Version 11.2.13 2023-12-26 19:07:36 +01:00
3f098cab31 Commande /voyage
Ajout de la commande /voyage pour gérer la fatigue en voyage
2023-12-26 19:06:13 +01:00
4274bce7d5 minor cleanup 2023-12-26 19:06:13 +01:00
25d68d265e Image acteur dans les message de tours 2023-12-26 19:06:13 +01:00
c1c192f710 Merge pull request '11.2.12 - Le somnifère d'Akarlikarlikar' (#693) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #693
2023-12-24 12:42:15 +01:00
7f64cd03f9 Version 11.2.12 2023-12-22 23:55:21 +01:00
3ac9f487d0 Fix: perte de rêve potions enchantées
La perte de rêve des potions enchantées bloquait le processus de
récupération de château dormant
2023-12-22 20:12:58 +01:00
fa67c3d9c1 Merge pull request 'Version 11.2.11' (#692) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #692
2023-12-22 09:30:48 +01:00
5b443f9ac0 Version 11.2.11 2023-12-22 02:25:30 +01:00
b0098574a0 Fix: refoulement
Le refoulement ne fonctionnait plus. Merci à javascript+VSCode
pour l'incapacité de fournir de l'analyse de code statique...
2023-12-22 02:21:22 +01:00
5729f7e926 Bordure des images de profils
Remplacement de la bordure noire inesthétique avec des images de
profil sous forme de badge ronds, en utilisant juste une variation
de couleur de fond.
2023-12-22 02:21:22 +01:00
0b66c945b8 Mise à jour couleur images compcreature
Passage du blanc à la couleur habituelle
2023-12-22 02:21:22 +01:00
80 changed files with 699 additions and 336 deletions

View File

@ -1,4 +1,38 @@
# 11.2 # 11.2
## 11.2.18 - Le bourrichon d'Akarlikarlikar
- Les différentes listes de la feuille de personnage ont maintenant le bouton pour envoyer dans le tchat
## 11.2.17 - Le cache-oeil d'Akarlikarlikar
- Le titre des fenêtre d'objet affiche de nouveau le type traduit
- Les tooltips des boutons edit/delete sont maintenant en Français
- La case à cocher "Cacher les points de tâches" fonctionne de nouveau
- Les personnages non-liés ne sont plus dans les liste de personnages joueurs pour le repos, le stress, la fatigue
- L'utilisation de Thanatos est visible dans l'onglet Haut-Rêve pour indiquer que la prochaine queue est une ombre
- La fenêtre des TMRs ne devrait plus afficher une zone noire au lieu de la carte.
## 11.2.16 - Le Tri d'Akarlikarlikar
- Tri alphabétique des items dans la fenêtre de création
- Mise à jour comptage de monde
## 11.2.15 - La Table d'Akarlikarlikar
- Tirage automatique de la foce d'une rencontre (via la commande /tmrr)
- Ajout de boutons pour ajouter des blessures "complètes" (ie avec perte d'endurance/vie)
## 11.2.14 - Les petits pas d'Akarlikarlikar
- Correction sur la gestion de la surprise
- Ordre des messages sur les cases humides
## 11.2.13 - Les cent pas d'Akarlikarlikar
- Ajout de la commande /voyage pour gérer la fatigue de marche des voyageurs
## 11.2.12 - Le somnifère d'Akarlikarlikar
- Fix: les potions enchantées n'empêchent plus de finir correctement Château Dormant
## 11.2.11 - Le miroir d'Akarlikarlikar
- Changement des images de compétence de créatures morsure/pinces pour être dans le thème
- Suppression de la bordure autour des portraits d'acteurs, remplacés par un légèr éclaircissement du fond
- Fix: le refoulement ajoute correctement un souffle et revient à 0 en cas d'échec
## 11.2.10 - Les expériences d'Akarlikarlikar ## 11.2.10 - Les expériences d'Akarlikarlikar
- En cas d'expérience des caractéristiques dérivées, - En cas d'expérience des caractéristiques dérivées,
- si plusieurs caractéristiques pourraient recevoir l'expérience, une fenêtre demande au joueur - si plusieurs caractéristiques pourraient recevoir l'expérience, une fenêtre demande au joueur

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 256px; width: 256px;"><g class="" transform="translate(0,3)" style=""><path d="M243.512 23.29c-27.105 18.337-53.533 32.92-82.274 45.337-2.843 17.364-3.948 34.497-4.05 51.584 28.913 15.41 56.096 32.85 83.33 49.634l7.045 4.344-3.432 7.482c-12.12 26.572-24.33 47.087-46.245 70.3l-5.184 5.512-6.46-3.904c-32.974-19.974-74.472-38.724-113.373-53.95l6.826-17.374c36.79 14.4 75.11 32.32 108.153 51.504 15.396-17.198 25.326-33.354 34.713-52.89-43.44-26.91-86.13-53.51-134.69-70.632-23.012 20.357-37.705 45.243-51.942 70.74 8.324 25.495 6.596 53.376-6.596 77.46 48.58-.593 97.994 2.23 150.666 10.26l5.658.837 1.787 5.44c8.85 26.46 11.79 54.41 8.325 83.588l-.987 8.432-8.466-.187c-40.508-.864-80.175-2.138-118.17.234 1.634 15.94-2.31 30.972-7.724 45.025 13.427 28.54 27.38 55.8 48.29 79.39 41.27-19.05 73.564-31.288 115.93-42.85-3.407-13.72-6.918-26.36-11.097-33.62-5.122-8.9-10.207-13.057-17.85-15.256-15.284-4.4-44.533 2.293-92.894 19.454l-6.243-17.594c48.907-17.354 79.702-26.894 104.283-19.82 9.133 2.628 16.884 8.004 23.066 15.46 14.487-7.627 28.415-16.79 42.053-26.996 12.34-45.92 37.29-81.42 66.626-112.107-7.226-13.52-13.208-27.204-20.563-40.613l-3.394-6.168 5-4.965c23.275-23.13 47.34-40.157 71.87-52.487l8.395 16.716c-20.952 10.53-41.503 25.913-61.795 45.152 12.41 23.91 22.263 45.5 39.457 64.826 37.488-27.124 74.943-51.39 116.84-74.938-13.96-30.473-31.345-58.357-56.286-79.462-32.2 13.38-62.527 17.39-92.61 12.29-14.223 13.25-30.094 22.23-48.756 23.337-29.017 1.722-60.74-15.74-99.174-57.672l6.858-6.295.017-.028.006.006 6.88-6.314c36.702 40.043 63.74 52.87 84.32 51.65 18.514-1.1 35.03-14.95 51.684-35.406-28.827-31.81-64.174-59.94-97.822-84.465zM39.324 277.884c-6.06.022-12.104.098-18.142.223 1.673 26.288 5.512 51.288 14.052 73.732 45.88-5.82 93.308-4.96 141.15-3.87 1.518-21.27-.253-41.69-6.058-61.212-45.528-6.565-88.59-9.03-131.002-8.873z" fill="#ffffff" fill-opacity="1" transform="translate(51.2, 51.2) scale(0.8, 0.8) rotate(0, 256, 256) skewX(0) skewY(0)"></path></g></svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,55 +1,56 @@
{ {
"TYPES": { "TYPES": {
"Actor": { "Actor": {
"Personnage": "Personnage", "personnage": "Personnage",
"Creature": "Créature", "creature": "Créature",
"Entite": "Entité de cauchemar", "entite": "Entité de cauchemar",
"Commerce": "Commerce", "commerce": "Commerce",
"Vehicule": "Véhicule" "vehicule": "Véhicule"
}, },
"Item": { "Item": {
"Arme": "Arme", "arme": "Arme",
"Armure": "Armure", "armure": "Armure",
"Blessure": "Blessure", "blessure": "Blessure",
"Casetmr": "TMR spéciale", "casetmr": "Case TMR spéciale",
"Chant": "Chant", "chant": "Chant",
"Competence": "Compétence", "competence": "Compétence",
"Competencecreature": "Compétence de créature", "competencecreature": "Compétence de créature",
"Conteneur": "Conteneur", "conteneur": "Conteneur",
"Danse": "Danse", "danse": "Danse",
"Extraitpoetique": "Extrait poetique", "empoignade": "Empoignade",
"Faune": "Faune", "extraitpoetique": "Extrait poetique",
"Gemme": "Gemme", "faune": "Faune",
"Herbe": "Herbe", "gemme": "Gemme",
"Ingredient": "Ingrédient", "herbe": "Herbe",
"Jeu": "Jeu", "ingredient": "Ingrédient",
"Livre": "Livre", "jeu": "Jeu",
"Maladie": "Maladie", "livre": "Livre",
"Meditation": "Méditation", "maladie": "Maladie",
"Monnaie": "Monnaie", "meditation": "Méditation",
"Munition": "Munition", "monnaie": "Monnaie",
"Musique": "Musique", "munition": "Munition",
"Nombreastral": "Nombre astral", "musique": "Musique",
"Nourritureboisson": "Nourriture & boisson", "nombreastral": "Nombre astral",
"Objet": "Objet", "nourritureboisson": "Nourriture & boisson",
"Oeuvre": "Oeuvre", "objet": "Objet",
"Ombre": "Ombre de Thanatos", "oeuvre": "Oeuvre",
"Plante": "Plante", "ombre": "Ombre de Thanatos",
"Poison": "Poison", "plante": "Plante",
"Possession": "Possession", "poison": "Poison",
"Potion": "Potion", "possession": "Possession",
"Queue": "Queue de Dragon", "potion": "Potion",
"Recettealchimique": "Recette alchimique", "queue": "Queue de Dragon",
"Recettecuisine": "Recette de cuisine", "recettealchimique": "Recette alchimique",
"Rencontre": "Rencontre TMR", "recettecuisine": "Recette de cuisine",
"Service": "Service", "rencontre": "Rencontre TMR",
"Signedraconique": "Signe draconique", "service": "Service",
"Sort": "Sort", "signedraconique": "Signe draconique",
"Sortreserve": "Sort en réserve", "sort": "Sort",
"Souffle": "Souffle de Dragon", "sortreserve": "Sort en réserve",
"Tache": "Tâche", "souffle": "Souffle de Dragon",
"Tarot": "Carte de tarot", "tache": "Tâche",
"Tete": "te de Dragon" "tarot": "Carte de tarot",
"tete": "Tête de Dragon"
} }
}, },
"EFFECT": { "EFFECT": {

View File

@ -95,25 +95,27 @@ export class RdDActor extends RdDBaseActorSang {
return ![TYPES.competencecreature, TYPES.tarot, TYPES.service].includes(item.type) return ![TYPES.competencecreature, TYPES.tarot, TYPES.service].includes(item.type)
} }
isPersonnageJoueur() {
return this.hasPlayerOwner && this.prototypeToken.actorLink
}
isPersonnage() { return true } isPersonnage() { return true }
isHautRevant() { return this.system.attributs.hautrevant.value != "" } isHautRevant() { return this.system.attributs.hautrevant.value != "" }
/* -------------------------------------------- */ /* -------------------------------------------- */
getAgilite() { return Number(this.system.carac.agilite?.value ?? 0) } getAgilite() { return this.system.carac.agilite?.value ?? 0 }
getChance() { return Number(this.system.carac.chance?.value ?? 0) } getChance() { return this.system.carac.chance?.value ?? 0 }
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value ?? this.carac.reve.value) } getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
getChanceActuel() { return Misc.toInt(this.system.compteurs.chance?.value ?? 10) } getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
getMoralTotal() { return Number(this.system.compteurs.moral?.value ?? 0) } getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
/* -------------------------------------------- */ /* -------------------------------------------- */
getEtatGeneral(options = { ethylisme: false }) { getEtatGeneral(options = { ethylisme: false }) {
const etatGeneral = Misc.toInt(this.system.compteurs.etat?.value) const etatGeneral = this.system.compteurs.etat?.value ?? 0
if (options.ethylisme) {
// Pour les jets d'Ethylisme, on retire le malus d'éthylisme (p.162) // Pour les jets d'Ethylisme, on retire le malus d'éthylisme (p.162)
return etatGeneral - this.malusEthylisme() const annuleMalusEthylisme = options.ethylisme ? this.malusEthylisme() : 0
} return etatGeneral - annuleMalusEthylisme
return etatGeneral
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -152,23 +154,26 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async $perteRevePotionsEnchantees() { async $perteRevePotionsEnchantees() {
let potions = this.itemTypes[TYPES.potion] let potions = this.itemTypes[TYPES.potion]
.filter(it => it.system.categorie.toLowerCase().includes('enchant') && !potion.system.prpermanent) .filter(it => Grammar.includesLowerCaseNoAccent(it.system.categorie, 'enchanté') && !it.system.prpermanent)
const potionUpdates = await Promise.all(potions.map(async potion => { const potionUpdates = await Promise.all(potions.map(async it => {
console.log(potion) const nouveauReve = Math.max(it.system.pr - 1, 0)
let nouveauReve = (potion.system.pr > 0) ? potion.system.pr - 1 : 0;
const message = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, {
pr: nouveauReve,
alias: this.name,
potionName: potion.name,
potionImg: potion.img
})
ChatMessage.create({ ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
content: message content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-potionenchantee-chateaudormant.html`, {
}); pr: nouveauReve,
return { _id: potion._id, 'system.pr': nouveauReve }; alias: this.name,
potionName: it.name,
potionImg: it.img
})
})
return {
_id: it._id,
'system.pr': nouveauReve,
'system.quantite': nouveauReve > 0 ? it.system.quantite : 0
}
})) }))
await this.updateEmbeddedDocuments('Item', potionUpdates); await this.updateEmbeddedDocuments('Item', potionUpdates);
} }
@ -896,7 +901,7 @@ export class RdDActor extends RdDBaseActorSang {
/* -------------------------------------------- */ /* -------------------------------------------- */
async ajouterRefoulement(value = 1, refouler) { async ajouterRefoulement(value = 1, refouler) {
const refoulement = this.system.reve.refoulement.value + value; let refoulement = this.system.reve.refoulement.value + value;
const roll = new Roll("1d20"); const roll = new Roll("1d20");
await roll.evaluate({ async: true }); await roll.evaluate({ async: true });
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})` });

View File

@ -21,6 +21,11 @@ export class RdDBaseActorSangSheet extends RdDBaseActorReveSheet {
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4)); this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6)); this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
this.html.find('.subir-blessure-contusion').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 2));
this.html.find('.subir-blessure-legere').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 2));
this.html.find('.subir-blessure-grave').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 4));
this.html.find('.subir-blessure-critique').click(async event => RdDItemBlessure.applyFullBlessure(this.actor, 6));
this.html.find('.jet-vie').click(async event => this.actor.jetDeVie()) this.html.find('.jet-vie').click(async event => this.actor.jetDeVie())
this.html.find('.jet-endurance').click(async event => await this.jetEndurance()) this.html.find('.jet-endurance').click(async event => await this.jetEndurance())

View File

@ -85,6 +85,8 @@ export class RdDBaseActor extends Actor {
return game.actors.get(actorId) return game.actors.get(actorId)
} }
isPersonnageJoueur() { return false }
static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; }; static extractActorMin = (actor) => { return { id: actor?.id, type: actor?.type, name: actor?.name, img: actor?.img }; };
static getParentActor(document) { static getParentActor(document) {

View File

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

View File

@ -1,6 +1,7 @@
import { RdDItem } from "../item.js"; import { RdDItem } from "../item.js";
import { Misc } from "../misc.js"; import { Misc } from "../misc.js";
import { RdDTimestamp } from "../time/rdd-timestamp.js"; import { RdDTimestamp } from "../time/rdd-timestamp.js";
import { ChatUtility } from "../chat-utility.js";
const BASE_TACHE_SOIN_BLESSURE = { const BASE_TACHE_SOIN_BLESSURE = {
type: "tache", type: "tache",
@ -14,10 +15,10 @@ const TACHES_SOIN_BLESSURE = {
} }
const definitionsBlessures = [ const definitionsBlessures = [
{ type: "contusion", gravite: 0, label: 'Contusion/éraflure', max: 100, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/eraflure.webp" }, { type: "contusion", gravite: 0, endurance: "1d4", vie: 0, label: 'Contusion/éraflure', max: 100, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/eraflure.webp" },
{ type: "legere", gravite: 2, label: 'Légère', max: 5, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" }, { type: "legere", gravite: 2, endurance: "1d6", vie: 0, label: 'Légère', max: 5, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "grave", gravite: 4, label: 'Grave', max: 2, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" }, { type: "grave", gravite: 4, endurance: "2d6", vie: -2, label: 'Grave', max: 2, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "critique", gravite: 6, label: 'Critique', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" }, { type: "critique", gravite: 6, endurance: "-100", vie: -4, label: 'Critique', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/blessure.webp" },
{ type: "mort", gravite: 8, label: 'Mort', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/mort.webp" } { type: "mort", gravite: 8, label: 'Mort', max: 1, icon: "systems/foundryvtt-reve-de-dragon/icons/sante/mort.webp" }
] ]
@ -40,6 +41,32 @@ export class RdDItemBlessure extends RdDItem {
} }
return mergeObject(duplicate(BASE_TACHE_SOIN_BLESSURE), tache) return mergeObject(duplicate(BASE_TACHE_SOIN_BLESSURE), tache)
} }
static async applyFullBlessure(actor, gravite) {
const definition = RdDItemBlessure.getDefinition(gravite)
let lostEndurance = 0
let lostVie = 0
if (definition.endurance) {
lostEndurance = new Roll(definition.endurance).roll({async: false}).total;
actor.santeIncDec("endurance", -Number(lostEndurance));
}
if (definition.vie) {
lostVie = definition.vie
actor.santeIncDec("vie", definition.vie)
}
await this.createBlessure(actor, gravite)
ChatMessage.create({
content: `Blessure ${definition.label} appliquée à ${actor.name}`+
`<br>Perte d'endurance : ${lostEndurance}`+
`<br>Perte de Vie : ${lostVie}`,
whisper: ChatUtility.getWhisperRecipientsAndGMs(actor.name)
});
}
static async createBlessure(actor, gravite, localisation = '', attacker) { static async createBlessure(actor, gravite, localisation = '', attacker) {
const definition = RdDItemBlessure.getDefinition(gravite) const definition = RdDItemBlessure.getDefinition(gravite)
const blessure = { const blessure = {

View File

@ -46,7 +46,7 @@ export class Misc {
} }
static typeName(type, subType) { static typeName(type, subType) {
return subType ? game.i18n.localize(`TYPES.${type}.${Misc.upperFirst(subType)}`) return subType ? game.i18n.localize(`TYPES.${type}.${subType}`)
: ''; : '';
} }

View File

@ -1307,6 +1307,7 @@ export class RdDCombat {
blessuresStatus: actor.computeResumeBlessure(), blessuresStatus: actor.computeResumeBlessure(),
SConst: actor.getSConst(), SConst: actor.getSConst(),
actorId: actor.id, actorId: actor.id,
actor: actor,
tokenId: tokenId, tokenId: tokenId,
isGrave: actor.countBlessures(it => it.isGrave()) > 0, isGrave: actor.countBlessures(it => it.isGrave()) > 0,
isCritique: actor.countBlessures(it => it.isCritique()) > 0 isCritique: actor.countBlessures(it => it.isCritique()) > 0

View File

@ -16,6 +16,7 @@ import { RdDRollTables } from "./rdd-rolltables.js";
import { RdDUtility } from "./rdd-utility.js"; import { RdDUtility } from "./rdd-utility.js";
import { FenetreRechercheTirage } from "./tirage/fenetre-recherche-tirage.js"; import { FenetreRechercheTirage } from "./tirage/fenetre-recherche-tirage.js";
import { TMRUtility } from "./tmr-utility.js"; import { TMRUtility } from "./tmr-utility.js";
import { DialogFatigueVoyage } from "./voyage/dialog-fatigue-voyage.js";
const rddRollNumeric = /^(\d+)\s*([\+\-]?\d+)?\s*(s)?/; const rddRollNumeric = /^(\d+)\s*([\+\-]?\d+)?\s*(s)?/;
@ -76,6 +77,7 @@ export class RdDCommands {
this.registerCommand({ path: ["/tirer", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('chat'), descr: "Tire un Désir Lancinant" }); this.registerCommand({ path: ["/tirer", "desir"], func: (content, msg, params) => RdDRollTables.getDesirLancinant('chat'), descr: "Tire un Désir Lancinant" });
this.registerCommand({ path: ["/tirer", "rencontre"], func: (content, msg, params) => this.getRencontreTMR(params), descr: `Détermine une rencontre dans les TMR (synonyme de "/tmrr")` }); this.registerCommand({ path: ["/tirer", "rencontre"], func: (content, msg, params) => this.getRencontreTMR(params), descr: `Détermine une rencontre dans les TMR (synonyme de "/tmrr")` });
this.registerCommand({ path: ["/tirage"], func: (content, msg, params) => this.tirage(), descr: "Ouvre la fenêtre de recherche et tirage" }); this.registerCommand({ path: ["/tirage"], func: (content, msg, params) => this.tirage(), descr: "Ouvre la fenêtre de recherche et tirage" });
this.registerCommand({ path: ["/voyage"], func: (content, msg, params) => this.voyage(msg, params), descr: "Gérer le voyage" });
this.registerCommand({ path: ["/sommeil"], func: (content, msg, params) => this.sommeil(msg, params), descr: "Prépare le passage de journée pour chateau dormant" }); this.registerCommand({ path: ["/sommeil"], func: (content, msg, params) => this.sommeil(msg, params), descr: "Prépare le passage de journée pour chateau dormant" });
this.registerCommand({ path: ["/meteo"], func: (content, msg, params) => this.getMeteo(msg, params), descr: "Propose une météo marine" }); this.registerCommand({ path: ["/meteo"], func: (content, msg, params) => this.getMeteo(msg, params), descr: "Propose une météo marine" });
@ -461,14 +463,13 @@ export class RdDCommands {
let motif = params.slice(1, params.length - 2); let motif = params.slice(1, params.length - 2);
let name = params[params.length - 1]; let name = params[params.length - 1];
const personnages = game.actors.filter(actor => actor.isPersonnageJoueur());
if (name == undefined) { if (name == undefined) {
for (let actor of game.actors) { for (let actor of personnages) {
// TODO: ne plus stresser les entités de cauchemar!
await actor.distribuerStress('stress', stress, motif); await actor.distribuerStress('stress', stress, motif);
} }
} else { } else {
//console.log(stressValue, nomJoueur); let actor = Misc.findActor(name, personnages) ?? Misc.findPlayer(name)?.character
let actor = Misc.findActor(name, game.actors.filter(it => it.hasPlayerOwner)) ?? Misc.findPlayer(name)?.character
if (actor) { if (actor) {
await actor.distribuerStress('stress', stress, motif); await actor.distribuerStress('stress', stress, motif);
} }
@ -485,10 +486,13 @@ export class RdDCommands {
} }
async tirage() { async tirage() {
FenetreRechercheTirage.create(); FenetreRechercheTirage.create()
}
async voyage() {
DialogFatigueVoyage.create()
} }
async sommeil() { async sommeil() {
DialogChateauDormant.create(); DialogChateauDormant.create()
} }
} }

View File

@ -266,16 +266,16 @@ export class SystemReveDeDragon {
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Foundry VTT Initialization */ /* Foundry VTT Initialization */
/* -------------------------------------------- */ /* -------------------------------------------- */
// CSS patch for v9
if (game.version) {
let sidebar = document.getElementById("sidebar");
sidebar.style.width = "min-content";
}
game.system.rdd.calendrier = new RdDCalendrier(); game.system.rdd.calendrier = new RdDCalendrier();
if (Misc.isUniqueConnectedGM()) { if (Misc.isUniqueConnectedGM()) {
new Migrations().migrate(); new Migrations().migrate();
this.messageDeBienvenue(); this.messageDeBienvenue();
this.registerUsageCount(SYSTEM_RDD); import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=>
console.log("No stats available, giving up.")
)
} }
StatusEffects.onReady(); StatusEffects.onReady();
@ -306,30 +306,6 @@ export class SystemReveDeDragon {
` }); ` });
} }
} }
/* -------------------------------------------- */
// Register world usage statistics
async registerUsageCount(registerKey) {
if (game.user.isGM) {
game.settings.register("world", "world-key", {
name: "Unique world key",
scope: "world",
config: false,
default: "NONE",
type: String
});
let worldKey = game.settings.get("world", "world-key")
if (worldKey == undefined || worldKey == "") {
worldKey = randomID(32)
game.settings.set("world", "world-key", worldKey)
}
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
$.ajax(regURL)
/* -------------------------------------------- */
}
}
} }
SystemReveDeDragon.start(); SystemReveDeDragon.start();

View File

@ -44,16 +44,15 @@ export class RdDTMRDialog extends Dialog {
type: Number, type: Number,
range: TMR_DISPLAY_SIZE.range range: TMR_DISPLAY_SIZE.range
}) })
await PixiTMR.init()
} }
static async create(actor, tmrData) { static async create(actor, tmrData) {
await PixiTMR.init()
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html', tmrData); let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.html', tmrData);
if (tmrData.mode != 'visu' && !game.user.isGM) { if (tmrData.mode != 'visu' && !game.user.isGM) {
ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatMessage.getWhisperRecipients("GM") }); ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatMessage.getWhisperRecipients("GM") });
} }
return new RdDTMRDialog(html, actor, tmrData); return new RdDTMRDialog(html, actor, tmrData)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -298,11 +297,10 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
async updateValuesDisplay() { async updateValuesDisplay() {
if (!this.rendered) { if (this.viewOnly || !this.rendered) {
return; return;
} }
const coord = this._getCoordActor(); const coord = this._getCoordActor();
HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord)); HtmlUtility.showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord));
let ptsreve = document.getElementById("tmr-pointsreve-value"); let ptsreve = document.getElementById("tmr-pointsreve-value");
@ -700,7 +698,6 @@ export class RdDTMRDialog extends Dialog {
} }
async _resultatMaitriseCaseHumide(rollData) { async _resultatMaitriseCaseHumide(rollData) {
await this.souffleSiEchecTotal(rollData);
if (rollData.rolled.isSuccess && rollData.double) { if (rollData.rolled.isSuccess && rollData.double) {
rollData.previous = { rolled: rollData.rolled, ajustements: rollData.ajustements }; rollData.previous = { rolled: rollData.rolled, ajustements: rollData.ajustements };
rollData.double = undefined; rollData.double = undefined;
@ -715,6 +712,7 @@ export class RdDTMRDialog extends Dialog {
if (rollData.rolled.isEchec) { if (rollData.rolled.isEchec) {
await this.close(); await this.close();
} }
await this.souffleSiEchecTotal(rollData);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -63,12 +63,6 @@ const cumulFatigueMatrix = _cumulSegmentsFatigue(fatigueMatrix);
const fatigueMalus = [0, 0, 0, -1, -1, -1, -2, -3, -4, -5, -6, -7]; // Provides the malus for each segment of fatigue const fatigueMalus = [0, 0, 0, -1, -1, -1, -2, -3, -4, -5, -6, -7]; // Provides the malus for each segment of fatigue
const fatigueLineSize = [3, 6, 7, 8, 9, 10, 11, 12]; const fatigueLineSize = [3, 6, 7, 8, 9, 10, 11, 12];
const fatigueLineMalus = [0, -1, -2, -3, -4, -5, -6, -7]; const fatigueLineMalus = [0, -1, -2, -3, -4, -5, -6, -7];
const fatigueMarche = {
"aise": { "4": 1, "6": 2, "8": 3, "10": 4, "12": 6 },
"malaise": { "4": 2, "6": 3, "8": 4, "10": 6 },
"difficile": { "4": 3, "6": 4, "8": 6 },
"tresdifficile": { "4": 4, "6": 6 }
}
/* -------------------------------------------- */ /* -------------------------------------------- */
const nomEthylisme = ["Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"]; const nomEthylisme = ["Emeché", "Gris", "Pinté", "Pas frais", "Ivre", "Bu", "Complètement fait", "Ivre mort"];
@ -208,6 +202,8 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs', 'systems/foundryvtt-reve-de-dragon/templates/coeur/afficher-coeur.hbs',
'systems/foundryvtt-reve-de-dragon/templates/tirage/liste-resultats-recherche.hbs', 'systems/foundryvtt-reve-de-dragon/templates/tirage/liste-resultats-recherche.hbs',
'systems/foundryvtt-reve-de-dragon/templates/time/horloge.hbs', 'systems/foundryvtt-reve-de-dragon/templates/time/horloge.hbs',
'systems/foundryvtt-reve-de-dragon/templates/voyage/fatigue-actor.hbs',
'systems/foundryvtt-reve-de-dragon/templates/voyage/option-vitesse-fatigue.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs', 'systems/foundryvtt-reve-de-dragon/templates/common/timestamp.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs', 'systems/foundryvtt-reve-de-dragon/templates/common/periodicite.hbs',
'systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs', 'systems/foundryvtt-reve-de-dragon/templates/common/enum-duree.hbs',
@ -288,6 +284,7 @@ export class RdDUtility {
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree()); Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode()); Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1))); Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option)); Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name))); Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));

View File

@ -70,7 +70,7 @@ export class StatusEffects extends FormApplication {
if (statusDemiSurprise.intersects(effect.statuses)) { if (statusDemiSurprise.intersects(effect.statuses)) {
return 1 return 1
} }
if (isCombat && effect.statuses.includes(STATUSES.StatusDemiReve)) { if (isCombat && effect.statuses.find(e => e == STATUSES.StatusDemiReve)) {
return 1 return 1
} }
return 0 return 0

View File

@ -85,7 +85,7 @@ export class AppAstrologie extends Application {
const nbAstral = calendrier.getNombreAstral() const nbAstral = calendrier.getNombreAstral()
const heures = RdDTimestamp.heures(); const heures = RdDTimestamp.heures();
return { return {
ajustementsActors: game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner) ajustementsActors:game.actors.filter(actor => actor.isPersonnageJoueur())
.map(actor => this.getAjustementActor(actor, nbAstral, heures)), .map(actor => this.getAjustementActor(actor, nbAstral, heures)),
nombresAstraux: calendrier.getNombresAstraux().map(na => this.getDetailNombreAstral(na)) nombresAstraux: calendrier.getNombresAstraux().map(na => this.getDetailNombreAstral(na))
} }
@ -116,10 +116,10 @@ export class AppAstrologie extends Application {
super.activateListeners(html); super.activateListeners(html);
this.html = html; this.html = html;
this.html.find('select[name="signe-astral"]').change(event => { this.html.find('select[name="signe-astral"]').change(event => {
this.selectNombreAstral(this.html.find('select[name="signe-astral"]').val()); this.selectNombreAstral(event.currentTarget.value);
}) })
this.html.find('select[name="signe-naissance"]').change(event => { this.html.find('select[name="signe-naissance"]').change(event => {
this.selectHeureNaissance(this.html.find('select[name="signe-naissance"]').val()); this.selectHeureNaissance(event.currentTarget.value);
}) })
this.html.find('td.nombre-astral').click(event => { this.html.find('td.nombre-astral').click(event => {
this.selectNombreAstral(Number.parseInt(event.currentTarget.attributes['data-nombre-astral'].value) - 1); this.selectNombreAstral(Number.parseInt(event.currentTarget.attributes['data-nombre-astral'].value) - 1);

View File

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

View File

@ -21,7 +21,7 @@ export class DialogRepos extends Dialog {
} }
constructor(html, actor) { constructor(html, actor) {
let options = { classes: ["DialogCreateSigneDraconiqueActorsActors"], width: 400, height: 'fit-content', 'z-index': 99999 }; let options = { classes: ["dialog-repos"], width: 400, height: 'fit-content', 'z-index': 99999 };
let conf = { let conf = {
title: "Se reposer", title: "Se reposer",
content: html, content: html,

View File

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

View File

@ -39,6 +39,8 @@ export class TMRRencontres {
const frequence = it => it.system.frequence[codeTerrain]; const frequence = it => it.system.frequence[codeTerrain];
const row = await this.table.getRandom(frequence, filtreMauvaise, forcedRoll); const row = await this.table.getRandom(frequence, filtreMauvaise, forcedRoll);
if (row) { if (row) {
console.log("DORM", row);
//row.document.system.computedForce = new Roll(row.document.system.formula).roll({async: false}).total;
await CompendiumTableHelpers.tableRowToChatMessage(row); await CompendiumTableHelpers.tableRowToChatMessage(row);
} }

View File

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

View File

@ -0,0 +1,181 @@
import { TYPES } from "../item.js"
import { RdDItemCompetence } from "../item-competence.js"
import { ChatUtility } from "../chat-utility.js"
const CODES_COMPETENCES_VOYAGE = ['Extérieur', 'Forêt', 'Montagne', 'Marais', 'Glace', 'Equitation']
const TABLEAU_FATIGUE_MARCHE = [
{
code: "aise", label: "Aisé", description: "Route ou chemin",
survies: ['Extérieur', 'Equitation'],
vitesses: [{ vitesse: 4, fatigue: 1 }, { vitesse: 6, fatigue: 2 }, { vitesse: 8, fatigue: 3 }, { vitesse: 10, fatigue: 4 }, { vitesse: 12, fatigue: 6 }],
},
{
code: "malaise", label: "Malaisé", description: "Hors piste (herbes et buissons)",
survies: ['Extérieur', 'Equitation'],
vitesses: [{ vitesse: 4, fatigue: 2 }, { vitesse: 6, fatigue: 3 }, { vitesse: 8, fatigue: 4 }, { vitesse: 10, fatigue: 6 }],
},
{
code: "difficile", label: "Difficile", description: "Hors piste (collines, forêt)",
survies: ['Extérieur', 'Forêt', 'Glace', 'Equitation'],
vitesses: [{ vitesse: 4, fatigue: 3 }, { vitesse: 6, fatigue: 4 }, { vitesse: 8, fatigue: 6 }],
},
{
code: "tresdifficile", label: "Très difficile", description: "Hors piste (montagne, jungle, marais)",
survies: ['Forêt', 'Montagne', 'Marais', 'Glace'],
vitesses: [{ vitesse: 4, fatigue: 4 }, { vitesse: 6, fatigue: 6 }],
},
]
export class DialogFatigueVoyage extends Dialog {
static dialog = undefined
static async create() {
if (!game.user.isGM) {
return
}
if (!DialogFatigueVoyage.dialog) {
const parameters = {
tableauFatigueMarche: TABLEAU_FATIGUE_MARCHE,
playerActors: game.actors.filter(actor => actor.isPersonnageJoueur())
.map(actor => DialogFatigueVoyage.prepareActor(actor)),
nombreHeures: 1,
}
DialogFatigueVoyage.setModeDeplacement(parameters, undefined, undefined)
const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/voyage/dialog-fatigue-voyage.hbs", parameters);
DialogFatigueVoyage.dialog = new DialogFatigueVoyage(html, parameters);
}
DialogFatigueVoyage.dialog.render(true);
}
static setModeDeplacement(parameters, code, vitesse) {
const ligneFatigueMarche = TABLEAU_FATIGUE_MARCHE.find(it => it.code == code) ?? TABLEAU_FATIGUE_MARCHE[0]
const rythme = ligneFatigueMarche.vitesses.find(it => it.vitesse == vitesse) ?? ligneFatigueMarche.vitesses[0]
parameters.typeTerrain = ligneFatigueMarche
parameters.vitesseDeplacement = rythme.vitesse
parameters.fatigueHoraire = rythme.fatigue
}
static prepareActor(actor) {
const competencesVoyage = {}
CODES_COMPETENCES_VOYAGE.forEach(codeSurvie =>
competencesVoyage[codeSurvie] = RdDItemCompetence.findCompetence(actor.itemTypes[TYPES.competence], codeSurvie, { onMessage: () => { } })
)
return {
actor: actor,
selected: true,
ajustementFatigue: 0,
competencesVoyage: competencesVoyage
}
}
constructor(html, parameters) {
const options = {
classes: ["dialog-fatigue-voyage"],
width: 600,
height: 'fit-content',
'max-height': 900,
'z-index': 99999
}
const conf = {
title: "Fatigue de voyage",
content: html,
buttons: {}
}
super(conf, options);
this.parameters = parameters
this.controls = {}
}
activateListeners(html) {
if (this.html == undefined) {
html.find('select[name="code-terrain"]').trigger("focus")
}
this.html = html;
super.activateListeners(html);
this.html.find('select[name="code-terrain"]').change(event => this.changeParameters())
this.html.find('select[name="vitesse-deplacement"]').change(event => this.changeParameters())
this.html.find('input[name="nombre-heures"]').change(event => this.changeParameters())
this.html.find('button[name="appliquer-fatigue"]').click(event => this.appliquerFatigue())
}
changeParameters() {
this.changeTerrain(this.html.find('select[name="code-terrain"]').val())
this.changeVitesse(this.html.find('select[name="vitesse-deplacement"]').val())
this.changeNombreHeures(this.html.find('input[name="nombre-heures"]').val())
this.setFatigue()
}
async changeTerrain(codeTerrain) {
if (this.parameters.typeTerrain.code != codeTerrain) {
const selectVitesseDeplacement = this.html.find('select[name="vitesse-deplacement"]')
const vitesse = selectVitesseDeplacement.val()
selectVitesseDeplacement.empty()
DialogFatigueVoyage.setModeDeplacement(this.parameters, codeTerrain, vitesse)
this.parameters.typeTerrain.vitesses.forEach(async rythme => {
selectVitesseDeplacement.append(await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/voyage/option-vitesse-fatigue.hbs', rythme))
})
selectVitesseDeplacement.val(this.parameters.vitesseDeplacement).change()
}
}
async changeVitesse(vitesse) {
if (this.parameters.vitesseDeplacement != vitesse) {
DialogFatigueVoyage.setModeDeplacement(this.parameters, this.parameters.typeTerrain.code, vitesse)
}
}
async changeNombreHeures(nombreHeures) {
this.parameters.nombreHeures = parseInt(nombreHeures)
}
async setFatigue() {
this.html.find('input[name="base-fatigue"]').val(this.parameters.nombreHeures * this.parameters.fatigueHoraire)
}
async appliquerFatigue() {
const fatigueBase = parseInt(this.html.find('input[name="base-fatigue"]').val() ?? 0)
const actors = jQuery.map(
this.html.find('div.fatigue-actors-list li.list-item'),
it => this.$extractActor(this.html.find(it))
)
actors.filter(it => it.selected)
.forEach(async it => {
const perteFatigue = fatigueBase + it.ajustement
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(it.actor.name),
content: await renderTemplate(
'systems/foundryvtt-reve-de-dragon/templates/voyage/chat-fatigue_voyage.hbs', mergeObject(it,
{
parameters: this.parameters,
fatigueBase: fatigueBase,
perteFatigue: perteFatigue,
isVoyage: fatigueBase == this.parameters.nombreHeures * this.parameters.fatigueHoraire
})
),
})
await it.actor.santeIncDec("fatigue", perteFatigue)
})
}
$extractActor(actorRow) {
const actor = game.actors.get(actorRow.data('actor-id'))
if (!actor) {
ui.notifications.warn(`Acteur ${it.actorId} introuvable`)
}
return {
actor: actor,
ajustement: parseInt(actorRow.find('input[name="ajustement-fatigue"]').val() ?? 0),
selected: actor && actorRow.find('input[name="selectionner-acteur"]').is(':checked')
}
}
async close() {
DialogFatigueVoyage.dialog = undefined
await super.close()
}
}

View File

@ -93,6 +93,7 @@
--background-control-selected: linear-gradient(to bottom, hsla(0, 100%, 25%, 0.5) 5%, hsla(0, 100%, 12%, 0.5) 100%); --background-control-selected: linear-gradient(to bottom, hsla(0, 100%, 25%, 0.5) 5%, hsla(0, 100%, 12%, 0.5) 100%);
--background-tooltip: hsla(60, 12%, 85%, 0.95); --background-tooltip: hsla(60, 12%, 85%, 0.95);
--background-error:hsla(16, 100%, 50%, 0.8); --background-error:hsla(16, 100%, 50%, 0.8);
--color-profile-border: hsla(0, 0%, 80%, 0.05);
} }
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/ /*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
@ -195,11 +196,10 @@ i:is(.fas, .far, .fa-solid, .fa-regular, .fa-sharp ) {
flex: 0 0 110px; flex: 0 0 110px;
height: 110px; height: 110px;
width: 110px; width: 110px;
margin-right: 0.5rem; padding: 0.2rem;
object-fit: scale-down;
object-position: 50% 0;
margin: 0.1rem;
object-fit: contain; object-fit: contain;
background-color: var(--color-profile-border);
border: 1px solid var(--color-profile-border);
} }
.system-foundryvtt-reve-de-dragon .rdd-item-sheet-tarot img.profile-img { .system-foundryvtt-reve-de-dragon .rdd-item-sheet-tarot img.profile-img {
@ -433,6 +433,7 @@ table {border: 1px solid #7a7971;}
} }
.flex-shrink { .flex-shrink {
flex: 'flex-shrink' ; flex: 'flex-shrink' ;
flex-shrink: 2;
} }
:is(.flex-grow, .flex-grow-3) { :is(.flex-grow, .flex-grow-3) {
flex-grow: 3; flex-grow: 3;
@ -440,7 +441,19 @@ table {border: 1px solid #7a7971;}
.flex-grow-2 { .flex-grow-2 {
flex-grow: 2; flex-grow: 2;
} }
.flex-grow-1 {
flex-grow: 1;
}
.flex-grow-0-5 {
flex-grow: 0.5;
}
.voyage-liste-survies {
max-width: 12rem;
}
/* Styles limited to foundryvtt-reve-de-dragon sheets */ /* Styles limited to foundryvtt-reve-de-dragon sheets */
.texte-dans-liste {
text-align: left;
}
.equipement-nom { .equipement-nom {
flex-grow : 4; flex-grow : 4;
margin: 0; margin: 0;
@ -963,12 +976,6 @@ section.sheet-body {
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
} }
.sheet header.sheet-header :is(.profile-img, .profile-img-token) {
object-fit: scale-down;
object-position: 50% 0;
margin: 0.5rem 0 0.5rem 0.5rem;
padding: 0;
}
.sheet header.sheet-header h1 { .sheet header.sheet-header h1 {
flex: 3; flex: 3;
} }
@ -1174,7 +1181,7 @@ ul.chat-list li:nth-child(odd) {
border-radius: 0.25rem; border-radius: 0.25rem;
padding: 0.1rem; padding: 0.1rem;
flex: 1 1 1.5rem; flex: 1 1 1.5rem;
display: flex !important; display: flex;
align-items: center !important; align-items: center !important;
} }
@ -1315,10 +1322,7 @@ div.competence-column div.categorie-competence{
margin-right: 0.2rem; margin-right: 0.2rem;
margin-left: 0.2rem; margin-left: 0.2rem;
} }
.blessures-title { .item-label {
font-weight: bold;
}
.alchimie-title {
font-weight: bold; font-weight: bold;
} }
.pointsreve-value { .pointsreve-value {

View File

@ -1,8 +1,8 @@
{ {
"id": "foundryvtt-reve-de-dragon", "id": "foundryvtt-reve-de-dragon",
"title": "Rêve de Dragon", "title": "Rêve de Dragon",
"version": "11.2.10", "version": "11.2.18",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.2.10.zip", "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.2.18.zip",
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json", "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json",
"changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md", "changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md",
"compatibility": { "compatibility": {

View File

@ -525,15 +525,11 @@
}, },
"Item": { "Item": {
"types": [ "types": [
"competence", "competencecreature", "arme", "armure", "blessure", "casetmr", "chant", "competence", "competencecreature", "conteneur", "danse",
"recettealchimique", "musique", "chant", "danse", "jeu", "recettecuisine", "oeuvre", "empoignade", "extraitpoetique", "faune", "gemme", "herbe", "ingredient", "jeu", "livre", "maladie", "meditation",
"objet", "arme", "armure", "conteneur", "herbe", "plante", "ingredient", "faune", "livre", "potion", "munition", "monnaie", "munition", "musique", "nombreastral", "nourritureboisson", "objet", "oeuvre", "ombre", "plante", "possession",
"monnaie", "nourritureboisson", "gemme", "poison", "potion", "queue", "recettealchimique", "recettecuisine", "rencontre",
"service", "service" ,"signedraconique", "sort", "sortreserve", "souffle", "tarot", "tache", "tete" ],
"meditation", "rencontre", "queue", "ombre", "souffle", "tete", "casetmr", "signedraconique", "sort", "sortreserve",
"nombreastral", "tache", "blessure", "maladie", "poison", "possession",
"tarot", "extraitpoetique", "empoignade"
],
"templates": { "templates": {
"description": { "description": {
"description": "", "description": "",

View File

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

View File

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

View File

@ -1,8 +1,14 @@
<h4>blessures</h4> <h4>Blessures</h4>
<div> <div>
<a class="chat-card-button creer-blessure-legere" data-tooltip="Ajouter une blessure légère"><i class="fas fa-plus-circle"></i> légère</a> <a class="chat-card-button creer-blessure-legere" data-tooltip="Ajouter une légère"><i class="fas fa-plus-circle"></i> légère</a>
<a class="chat-card-button creer-blessure-grave" data-tooltip="Ajouter une blessure grave"><i class="fas fa-plus-circle"></i> grave</a> <a class="chat-card-button creer-blessure-grave" data-tooltip="Ajouter une grave"><i class="fas fa-plus-circle"></i> grave</a>
<a class="chat-card-button creer-blessure-critique" data-tooltip="Ajouter une blessure critque"><i class="fas fa-plus-circle"></i> critique</a> <a class="chat-card-button creer-blessure-critique" data-tooltip="Ajouter une critique"><i class="fas fa-plus-circle"></i> critique</a>
</div>
<div>
<a class="chat-card-button subir-blessure-contusion" data-tooltip="Subir une contusion (avec perte d'Endurance)"><i class="fas fa-swords"></i> contusion</a>
<a class="chat-card-button subir-blessure-legere" data-tooltip="Subir une légère (avec perte d'Endurance)"><i class="fas fa-swords"></i> légère</a>
<a class="chat-card-button subir-blessure-grave" data-tooltip="Subir une grave (avec perte d'Endurance/Vie)"><i class="fas fa-swords"></i> grave</a>
<a class="chat-card-button subir-blessure-critique" data-tooltip="Subir une critique (avec perte d'Endurance/Vie)"><i class="fas fa-swords"></i> critique</a>
</div> </div>
<ul class="item-list alterne-list"> <ul class="item-list alterne-list">

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -19,6 +19,14 @@
{{/if}} {{/if}}
</span> </span>
</li> </li>
{{#if system.reve.reve.thanatosused}}
<li class="item flexrow" >
<span class="competence-label">La prochaine queue est une Ombre</span>
<span>
<img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp"/>
</span>
</li>
{{/if}}
</ul> </ul>
<hr> <hr>
{{> "systems/foundryvtt-reve-de-dragon/templates/actor/dragon-queues.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/actor/dragon-queues.html"}}

View File

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

View File

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

View File

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

View File

@ -1 +1,2 @@
<img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
<h4>C'est au tour de {{alias}} !</h4> <h4>C'est au tour de {{alias}} !</h4>

View File

@ -1,3 +1,4 @@
<img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
<h4>Résumé de santé pour {{alias}}</h4> <h4>Résumé de santé pour {{alias}}</h4>
<div data-combatid="{{combatId}}" data-combatmessage="actor-turn-summary">{{blessuresStatus}}</div> <div data-combatid="{{combatId}}" data-combatmessage="actor-turn-summary">{{blessuresStatus}}</div>
<div>Son état général est de : {{etatGeneral}} {{#if isSonne}} et est <strong>sonné</strong>{{/if}}</div> <div>Son état général est de : {{etatGeneral}} {{#if isSonne}} et est <strong>sonné</strong>{{/if}}</div>

View File

@ -5,6 +5,11 @@
<div> <div>
<img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" /> <img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" />
<p>{{linkCompendium document.pack document.id document.name}}</p> <p>{{linkCompendium document.pack document.id document.name}}</p>
{{#if document.system.formule}}
<div class="poesie-extrait">
[[/r {{document.system.formule}}]]
</div>
{{/if}}
{{#if document.system.description}} {{#if document.system.description}}
<div class="poesie-extrait"> <div class="poesie-extrait">
{{{document.system.description}}} {{{document.system.description}}}

View File

@ -62,8 +62,7 @@
<span id="tmr-fatigue-table">{{{fatigue.html}}}</span> <span id="tmr-fatigue-table">{{{fatigue.html}}}</span>
</div> </div>
{{/if}} {{/if}}
<div class="flex-group-center flex-grow"> <div class="flex-group-center flex-grow"></div>
</div>
</div> </div>
</div> </div>
</form> </form>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,29 +3,29 @@
{{!-- Sheet Body --}} {{!-- Sheet Body --}}
<section class="sheet-body"> <section class="sheet-body">
<div class="form-group"> <div class="form-group">
<label class="alchimie-title" for="xp">But</label> <label class="item-label" for="system.but">But</label>
<input class="attribute-value" type="text" name="system.but" value="{{system.but}}" data-dtype="String"/> <input class="attribute-value" type="text" name="system.but" value="{{system.but}}" data-dtype="String"/>
</div> </div>
<div class="flexcol"> <div class="flexcol">
<span><label class="alchimie-title">Manipulation : </label></span> <span><label class="item-label">Manipulation : </label></span>
<div class="form-group medium-editor"> <div class="form-group medium-editor">
{{editor manipulation_update target="system.manipulation" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}} {{editor manipulation_update target="system.manipulation" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}}
</div> </div>
</div> </div>
<div class="flexcol"> <div class="flexcol">
<span><label class="alchimie-title">Utilisation : </label></span> <span><label class="item-label">Utilisation : </label></span>
<div class="form-group small-editor"> <div class="form-group small-editor">
{{editor utilisation target="system.utilisation" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}} {{editor utilisation target="system.utilisation" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}}
</div> </div>
</div> </div>
<div class="flexcol"> <div class="flexcol">
<span><label class="alchimie-title">Enchantement : </label></span> <span><label class="item-label">Enchantement : </label></span>
<div class="form-group small-editor"> <div class="form-group small-editor">
{{editor enchantement target="system.enchantement" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}} {{editor enchantement target="system.enchantement" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}}
</div> </div>
</div> </div>
<div class="flexcol"> <div class="flexcol">
<span><label class="alchimie-title">Sur-effet : </label></span> <span><label class="item-label">Sur-effet : </label></span>
<div class="form-group small-editor"> <div class="form-group small-editor">
{{editor sureffet target="system.sureffet" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}} {{editor sureffet target="system.sureffet" button=true owner=options.isOwner editable=options.editable engine="prosemirror"}}
</div> </div>

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>Draconic</label> <label for="system.draconic">Draconic</label>
<select name="system.draconic" id="draconic" data-dtype="String"> <select name="system.draconic" data-dtype="String">
{{#select system.draconic}} {{#select system.draconic}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-draconic.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-draconic.html"}}
{{/select}} {{/select}}
@ -12,7 +12,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.caseTMR">Case TMR</label> <label for="system.caseTMR">Case TMR</label>
<select name="system.caseTMR" id="caseTMR" data-dtype="String"> <select name="system.caseTMR" data-dtype="String">
{{#select system.caseTMR}} {{#select system.caseTMR}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-tmr-type.html"}}
<option value="special">Case spéciale TMR (saisie ci-dessous)</option> <option value="special">Case spéciale TMR (saisie ci-dessous)</option>

View File

@ -9,8 +9,8 @@
</div> </div>
{{else}} {{else}}
<div class="form-group"> <div class="form-group">
<label>Draconic</label> <label for="system.draconic">Draconic</label>
<select name="system.draconic" id="draconic" data-dtype="String"> <select name="system.draconic" data-dtype="String">
{{#select system.draconic}} {{#select system.draconic}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-draconic.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-draconic.html"}}
{{/select}} {{/select}}

View File

@ -36,7 +36,7 @@
{{#if options.isGM}} {{#if options.isGM}}
<div class="form-group"> <div class="form-group">
<label for="system.cacher_points_de_tache">Cacher les Points de Tâches nécessaires au joueur</label> <label for="system.cacher_points_de_tache">Cacher les Points de Tâches nécessaires au joueur</label>
<input class="attribute-value" ²type="checkbox" name="system.cacher_points_de_tache" {{checked system.cacher_points_de_tache}}/> <input class="attribute-value" type="checkbox" name="system.cacher_points_de_tache" {{checked system.cacher_points_de_tache}}/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="system.points_de_tache">Points de tâches nécessaires (MJ)</label> <label for="system.points_de_tache">Points de tâches nécessaires (MJ)</label>

View File

@ -9,12 +9,12 @@
<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="flexcol"> <div class="flexcol">
<div class="form-group"> <div class="form-group">
<label>Aspect</label> <label for="system.concept">Aspect</label>
<input class="attribute-value" type="text" name="system.concept" value="{{system.concept}}" data-dtype="String" /> <input class="attribute-value" type="text" name="system.concept" value="{{system.concept}}" data-dtype="String" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Sens</label> <label for="system.aspect">Sens</label>
<select name="system.aspect" id="aspect" data-dtype="String"> <select name="system.aspect" data-dtype="String">
{{#select system.aspect}} {{#select system.aspect}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-aspect-tarot.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-aspect-tarot.html"}}
{{/select}} {{/select}}

View File

@ -0,0 +1,10 @@
<img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
<p>{{actor.name}} s'est fatigué de {{perteFatigue}}
{{#if (and isVoyage (gt parameters.nombreHeures 0))}}
après {{parameters.nombreHeures}} heure{{#if (gt parameters.nombreHeures 1)}}s{{/if}}
de voyage {{lowerFirst parameters.typeTerrain.label}}
à {{parameters.vitesseDeplacement}} km/h<sup>dr</sup> (Fatigue par heure: {{parameters.fatigueHoraire}})
</p>
<p>{{parameters.typeTerrain.description}}
{{/if}}
</p>

View File

@ -0,0 +1,58 @@
<form class="dialog-fatigue-voyage">
<div class="flexcol">
<div class="flexrow">
<label for="code-terrain" class="flex-shrink">Type de terrain</label>
<div>
<select type="text" name="code-terrain" value="{{typeTerrain.code}}" data-dtype="String">
{{#select typeTerrain.code}}
{{#each tableauFatigueMarche as |ligne|}}
<option value="{{ligne.code}}">{{ligne.label}} - {{ligne.description}}</option>
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="flexrow">
<label for="vitesse-deplacement" class="flex-shrink">Vitesse de marche</label>
<div>
<select type="text" name="vitesse-deplacement" value="{{vitesseDeplacement}}" data-dtype="String">
{{#select vitesseDeplacement}}
{{#each typeTerrain.vitesses as |rythme|}}
{{> 'systems/foundryvtt-reve-de-dragon/templates/voyage/option-vitesse-fatigue.hbs' vitesse=rythme.vitesse fatigue=rythme.fatigue}}
{{/each}}
{{/select}}
</select>
</div>
</div>
<div class="flexrow">
<label for="nombre-heures" class="flex-shrink">Nombre d'heures</label>
<div>
<input type="number" name="nombre-heures" class="number-x2 nombre-heures" data-dtype="Number" value="{{nombreHeures}}" min="1" max="8"/> heures
</div>
</div>
<div class="flexrow">
<label for="base-fatigue" class="flex-shrink">Fatigue à appliquer</label>
<div>
<input type="number" name="base-fatigue" class="number-x2 base-fatigue" data-dtype="Number" value="{{nombreHeures}}" min="1" max="60"/>
</div>
</div>
<div><hr></div>
<div class="flexrow fatigue-actors-list">
<ul class="item-list alterne-list scrollable-list">
<li class="competence-header flexrow">
<span class="flex-grow-2">Personnage</span>
<span class="flex-grow-2">Survies</span>
<span class="flex-grow-1" data-tooltip="Ajustements à appliquer pour les personnages se reposant (par exemple, à cheval)">Ajustements</span>
</li>
{{#each playerActors as |selected|}}
{{>'systems/foundryvtt-reve-de-dragon/templates/voyage/fatigue-actor.hbs' voyageur=selected survies=@root.typeTerrain.survies}}
{{/each}}
</ul>
</div>
<hr>
<div class="flexrow">
<span class="flex-shrink"></span>
<button name="appliquer-fatigue">Appliquer la fatigue</button>
</div>
</div>
</form>

View File

@ -0,0 +1,23 @@
<li class="item flexrow list-item texte-dans-liste" data-actor-id="{{voyageur.actor.id}}">
<span class="flex-grow-2 flexrow">
<input type="checkbox" name="selectionner-acteur" {{#if voyageur.selected}}checked{{/if}}/>
<label>
<img class="chat-icon" src="{{voyageur.actor.img}}" data-tooltip="{{voyageur.actor.name}}" />
<span>{{voyageur.actor.name}}</span>
</label>
</span>
<span class="flex-grow-2">
<div class="flexcol ">
<label class="voyage-liste-survies">
{{#each voyageur.competencesVoyage as |comp key|}}
{{#if (array-includes ../survies key)}}
{{key}} {{comp.system.niveau}},
{{/if}}
{{/each}}
</label>
</div>
</span>
<span class="flex-grow-1">
<input type="number" name="ajustement-fatigue" class="number-x2 ajustement-fatigue" data-dtype="Number" value="{{voyageur.ajustementFatigue}}" min="-6" max="6"/>
</span>
</li>

View File

@ -0,0 +1 @@
<option value="{{vitesse}}">{{vitesse}} km/h<sup>dr</sup> (Fatigue: {{fatigue}})</option>