Compare commits

..

30 Commits

Author SHA1 Message Date
1d63cd54fe Merge pull request '13.0.7 - Sous le signe d'Illysis' (#768) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
All checks were successful
Release Creation / build (release) Successful in 2m23s
Reviewed-on: #768
2025-09-12 20:56:24 +02:00
15e6127e02 Fix effets TMR A0 2025-09-12 18:57:34 +02:00
afd8c2ac80 Migration niveau oeuvres
Passage du niveau à une valeur numérique
2025-09-12 18:56:17 +02:00
18de904849 Affichage des signes d'heure
Présentation en ligne pour fenêtre d'astrologie.
Pourra être utilisée là où on affiche des heures (méditations)
2025-09-12 18:54:47 +02:00
cb48c960c2 appel moral sur double significative
Lors d'un appel au moral avcec un facteur de significative recquis,
vérifier la réussite effective (en utitisant la bnonne fraction du
score) pour déterminer la perte de moral
2025-09-12 18:53:40 +02:00
bd082248d9 Correction de tooltips (v13)
Sur les ajustements, les tooltips sont visibles
2025-09-12 18:52:11 +02:00
df9df90ccb Init premier round 2025-09-12 18:47:41 +02:00
0456221cf7 Merge pull request 'Fix commerces' (#767) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
All checks were successful
Release Creation / build (release) Successful in 5m16s
Reviewed-on: #767
2025-09-02 00:19:24 +02:00
583b4ff003 Fix commerces 2025-08-24 14:57:01 +02:00
b4ac906802 Merge pull request 'v13.0.6' (#766) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
Reviewed-on: #766
2025-08-03 23:35:05 +02:00
395c7a4cc3 Fix boutons feuille simplifiée 2025-08-03 22:48:01 +02:00
27bc07f64a Soins depuis les tokens 2025-08-03 22:48:01 +02:00
2f3ec7bab0 Upadte changelog et normalisation markdown 2025-07-17 07:44:58 +02:00
8d39a0526f Export scriptarium OK agfain
All checks were successful
Release Creation / build (release) Successful in 2m29s
2025-07-16 23:37:44 +02:00
f83548b91e Merge pull request 'Suppression de "rêve actuel" des caracs' (#765) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
All checks were successful
Release Creation / build (release) Successful in 2m6s
Reviewed-on: #765
2025-06-24 22:27:48 +02:00
90d17a3477 Suppression de "rêve actuel" des caracs
Cette ligne était parfois ajoutée aux caracs des personnages.
Ajout d'une migration pour nettoyage.
2025-06-23 22:20:00 +02:00
fb15f3eb38 Merge pull request 'Dimension des éditeurs prosemirror' (#764) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
Reviewed-on: #764
2025-06-23 16:28:13 +02:00
4df0eab574 Modification des messages de tchat 2025-06-23 02:04:15 +02:00
c8d589f0d2 Macro jet quelconque 2025-06-23 01:36:18 +02:00
d7470836a5 Boutons de déplacement dans les TMR 2025-06-23 01:35:55 +02:00
817fa8e62a Boutons de l'horloge 2025-06-22 23:55:08 +02:00
0fe4f64343 Ne pas proposer l'export csv par défaut 2025-06-22 16:43:27 +02:00
d6b5b0a550 Dimension des éditeurs prosemirror 2025-06-21 20:42:25 +02:00
c9d87851bd Merge pull request 'Corrections less/css v13' (#763) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
All checks were successful
Release Creation / build (release) Successful in 2m17s
Reviewed-on: #763
2025-06-10 20:45:15 +02:00
5b48fda3d0 Correction d'affichages lignes
Correction de plusieurs cas d'affichage en lignes qui étaient formatés
sur plusieurs lignes

- noms dans liste d'objets (et bouton des conteneurs)
- compétences de créatures sur une ligne
- acteur sur une ligne dans l'astrologie
- résultat de recherche
2025-06-10 01:22:25 +02:00
abae85157b Merge pull request 'v13' (#762) from VincentVk/foundryvtt-reve-de-dragon:v13 into v13
Reviewed-on: #762
2025-06-06 20:42:17 +02:00
da2dca1769 Fix: espaces description Grizzal 2025-06-06 00:35:41 +02:00
6e405ea753 Fix: on peut de nouveau acheter aux commerces 2025-06-06 00:34:58 +02:00
a96f4bf641 Fix templates for new appv2
All checks were successful
Release Creation / build (release) Successful in 1m34s
2025-06-02 23:33:41 +02:00
a0f42204d5 Fix templates for new appv2
All checks were successful
Release Creation / build (release) Successful in 2m31s
2025-06-02 23:25:49 +02:00
101 changed files with 1198 additions and 655 deletions

View File

@@ -64,13 +64,13 @@ jobs:
system.json
api_key: '${{secrets.ALLOW_PUSH_RELEASE}}'
#- name: Publish to Foundry server
# uses: djlechuck/foundryvtt-publish-package-action@v1
# with:
# token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
# id: 'foundryvtt-reve-de-dragon'
# version: ${{github.event.release.tag_name}}
# manifest: 'https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json'
# notes: 'https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v13/changelog.md'
# compatibility-minimum: '13'
# compatibility-verified: '13'
- name: Publish to Foundry server
uses: djlechuck/foundryvtt-publish-package-action@v1
with:
token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
id: 'foundryvtt-reve-de-dragon'
version: ${{github.event.release.tag_name}}
manifest: 'https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json'
notes: 'https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v13/changelog.md'
compatibility-minimum: '13'
compatibility-verified: '13'

View File

@@ -1,21 +1,65 @@
# 13.0
## 13.0.7 - Sous le signe d'Illysis
- Fix Foundry V13
- les tooltips des ajustements sont correctement visible
- correction des affichages des signes d'heures dans la fenêtre d'astrologie
- en cas d'appel au moral lorsqu'une double significative est requise,
le moral est perdu si la réussite est insuffisante
- transformation du niveau des musiques/danses/chants/recettes de cuisine en valeur numérique
- les effets draconiques sur une case inconnue (A0) ne causent plus de problèmes dans les TMRs
## 13.0.6 - Le bandage d'Illysis
- Les soins sont de nouveau disponibles depuis les tokens
- Correction des boutons de la feuille simplifiée
- On peut de nouveau acheter dans les commerces
## 13.0.5
- Export CSV/Scriptarium à nouveau disponible dans les menus d'acteurs
## 13.0.4 - Le long discours d'Illysis
- On peut de nouveau modifier les descriptions
- ne pas proposer l'export csv par défaut
- Correction de la macro "Jet quelconque"
- Correction de la ligne 'rêve actuel' ajoutée dans les caracs
- Corrections d'affichage
- boutons de l'horloge
- boutons de déplacement des TMR
- modification des messages de tchat
## 13.0.3 - La dernière auberge d'Illysis
- On peut de nouveau acheter aux commerces
- La description des Grizzal a des espaces
- Corrections v13
- Affichage des images et noms d'objets en ligne
- affichage des compétences de créature sur une ligne
- Affichage des informations d'acteur sur une ligne dans l'astrologie
- Affichage des résultat de recherche
## 13.0.0 - Le début de l'errance d'Illysis
- Migration vers la version 13 de Foundry
# 12.0
## 12.0.50 - Le sommeil d'Astrobazzarh
- Le don de double rêve n'interrompt plus le sommeil toutes les heures
- la perte de fatigue à la descente des TMR est visible immédiatement
## 12.0.49 - La deuxième lame d'Astrobazzarh
- Corrections
- les défenses particulières sont correctement affichées
- les vieux boucliers (sans catégorie de parade car créés il y a longtemps) peuvent parer...
- Les attaques à distance n'ont pas de difficulté libre
## 12.0.48 - La chèvre d'Astrobazzarh
- le Bandersnatch a une protection de 10
- la consistance chèvre est maintenant possible dans les recettes
alchimiques (et toutes les consistances avec accents)
@@ -24,10 +68,12 @@
- Correction: les réussites particulières fonctionnent avec les caractéristiques dérivées
## 12.0.47
- Correction sur les mise à jour en cascade -
- Correction sur le force rendering après un changement de competence
## 12.0.46 - Le double demi d'Astrobazzarh
- correction des raffraîchissement lors du sommeil qui empêchait de dormir
plusieurs heures
- Si la fatigue n'est pas utilisée, les rounds dans les TMR font perdre de l'endurance (au lieu d'en gagner)
@@ -54,18 +100,22 @@
- Correction des jets `@roll[vue/-2]` qui tentaient de chercher une compétence -2 (à cause des armes à 1/2 mains)
## 12.0.41 - La loupe d'Astrobazzarh
- On peut de nouveau effectuer des tirages cachés
- Le stress transformé est bien diminué lorsqu'on met le stress dans une compétence
## 12.0.40 - Les mains d'Astrobazzarh
- correction des attaques particulières en combat
- correction de message sur les min/max liés aux modificateurs de races (s'applique uniquement sur la taille)
## 12.0.39 - Les mains d'Astrobazzarh
- les armes à 1 ou 2 mains fonctionnent dans les liens de jets de dés
- commande `/jet` pour poster une demande de jet de dés
## 12.0.38 - Les prévisions d'Astrobazzarh
- Correction de modifications de personnages qui ne s'affichaient pas:
- changements d'endurance/vie/fatigue, transformé, ...
- Migration des compétences "Ecriture" en "Écriture" dans les tâches, livres, oeuvres et méditations
@@ -75,12 +125,14 @@
- utilisation de l'extension hbs pour tous les fichiers handlebars
## 12.0.37 - Les enchantements d'Astrobazzarh
- les potions ont un état, seules les potions liquides sont enchantables
- les lancements de sorts du jour sont conservés jusqu'à chateau dormant
- lorsqu'un joueur souhaite enchanter une potion, les sorts d'enchantements/purification/permanence doivent avoir été lancés auparavant
- on peut enchanter des gemmes exactement comme des potions
## 12.0.36 - L'alchimie d'Astrobazzarh
- Nouveautés
- ajout d'un bouton pour enchanter les potions
- standardisation des boutons d'actions sur les items
@@ -95,9 +147,11 @@
- Corrections de descriptions pour proposer les jet de dés
## 12.0.35 - La Solution d'Astrobazzarh
- Fix problème d'initialisation des feuilles d'items
## 12.0.34 - la tête d'Astrobazzarh
- support de liens "jets de dés"
- on peut ajouter des liens "jet de dés" dans les journaux, descriptions, notes, maladresses, ...
- avec la syntaxe `@roll[...]` on peut ajouter le lien vers:
@@ -112,28 +166,35 @@
- gestion des blocs secrets dans les descriptions
## 12.0.33 - la vieillesse d'Astrobazzarh
- retour de l'expérience pour les joueurs
- suppression du message "Pas de caractéristique" sur les jets d'odorat-goût
## 12.0.32 - les rêveries d'Astrobazzarh
- Ajout des Items Race pour gérer les ajustements liés aux races
## 12.0.31 - le mausolée d'Astrobazzarh
- Correction: les automatisation de combat jouer-MJ fonctionnentde nouveau
## 12.0.30 - le cauchemar d'Astrobazzarh
- calcul automatique du niveau des entités selon leur rêve
- la description des créatures venimeuses contient un lien vers leur venin
- Correction: les messages de combats ne marchaient plus (Changement combiné Foundry + rêve de Dragon)
## 12.0.29 - L'indexation d'Astrobazzarh
- les liens dans la descriptions des sorts pointent vers les sorts du compendium
- la description du chrasme contient le lien vers son venin plutôt qu'un tableau
## 12.0.28 - Les réserves d'Astrobazzarh
- possibilité de mettre en réserve depuis un sort connu
## 12.0.27 - Les vêtements d'Astrobazzarh
- Ajout de la liste des armures dans l'onglet caractéristiques
- Ajout d'une option pour choisir une carte des TMR alternatives
- Le Gardien peut créer des sorts en réserve parmi les sorts d'un personnage
@@ -154,12 +215,14 @@
- les modèles de personnages non joueurs sont non-liés par défaut
## 12.0.26 - Astrobazzarh le Haut-rêvant
- bouton pour le don de haut-rêve en un clic
- les compétences de draconic ne sont plus précédées de "Voie de"
- migration des compétences & compendiums
- Correction feuille simplifiée qui ne s'affichait pas en cas de sort variable
## 12.0.24 - Les ajustements d'Astrobazzarh
- amélioration
- meilleure gestion des noms des voies de draconic
- affichage du détail des sorts avec le nom de voie, 'court', la difficulté, le coût
@@ -169,6 +232,7 @@
- on peut maintenant saisir et supprimer les bonus de cases de manière intuitive
## 12.0.23 - La bibliothèque d'Astrobazzarh
- corrections mineures
- meilleure gestion de la parade des armes naturelles
- cas de "User lacks permission to update" pour les blessures et les StatusEffects
@@ -184,19 +248,23 @@
- dans les compendiums, les compétences Écriture et Épée ont une majuscule accentuée. Les Épée dans le compendium d'équipements référence le nom de compétence accentué.
## 12.0.21 - La nomination d'Astrobazzarh
- Les noms pour les messages dans le tchat sont maintenant ceux des tokens plutôt que ceux des acteurs
- Fix: le choix des effets dans les options s'affiche correctement
## 12.0.20 - Le tableau d'Astrobazzarh
- Ecran d'accueil officiel Scriptarium
## 12.0.19 - La témérité d'Astrobazzarh
- Fix
- les défenses des créatures sont correctement filtrées
- le lancer d'initiative pour tous les personnages/PNJs fonctionne correctement
- les lieux et commerces n'ont pas d'initiative
## 12.0.18 - A la barbe d'Astrobazzarh
- Améliorations sur la feuille de PNJ simplifiée
- Ajout du portrait
- Ajout du corps à corps
@@ -213,11 +281,13 @@
- Ajout d'un indicateur pour les armes de parade nécessitant une significative
## 12.0.16 - Le secret d'Astrobazzarh
- Fix: les jets envoyés messages uniquement au MJ ne sont plus envoyés à tous les autres joueurs (et dupliqués)
- Les noms affichés dans les automatisations de combat sont maintenant ceux des tokens plutôt que ceux des acteurs
- Ajout d'une option pour la localisation des blessures
## 12.0.15 - Le messager d'Astrobazzarh
- Correction des faces de dés personalisés dice-so-nice
- Les messages de maladies ne sont plus publics
- Les messages privés dans les TMR sont aussi envoyés au GM
@@ -225,6 +295,7 @@
- Amélioration du rendu des tables de compendiums (commande /table)
## 12.0.14 - Les légions d'Astrobazzarh
- Feuille de PNJ:
- boutons standard (encaissement, ...)
- boutons pour ajuster les compteurs
@@ -233,15 +304,18 @@
- gestion des armes
## 12.0.13 - La Chance d'Astrobazzarh
- Fix: jets de caractéristiques
## 12.0.12 - L'étalage d'Astrobazzarh
- Fix: On peut de nouveau vendre des items sans propriétaire, depuis les compendiums ou depuis l'onglet des Objets
- Début de Feuille PNJ au format des encarts Scriptarium
- support des jets de caractéristiques
- support des jets de compétences
## 12.0.11 - Le scriptorium d'Astrobazzarh
- ajout d'un bouton pour générer les éléments de description d'un personnage
- ajout du logo en background dans la liste des systèmes Foundry
- ajout d'un champ pour le métier
@@ -250,10 +324,12 @@
- export de l'esquive avec armure et sans armure
## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh
- corrections de l'export scriptarium
- ajout d'une fonction avancée pour un exporter "scriptarium" des personnages
## 12.0.8 - La quincaillerie d'Astrobazzarh
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
- Ecaille d'efficacité
- l'écaille d'efficacité est prise en compte même si on n'utilise pas le ciblage en combat
@@ -263,6 +339,7 @@
- le tooltip de l'initiative affiche correctement l'initiative
## 12.0.7 - La propriété d'Astrobazzarh
- correction des opérations faites à la création d'un Item:
- la durée des queues/rencontres/souffles
- les effets draconiques d'un souffle/queue
@@ -277,6 +354,7 @@
- la commande /voyage affiche maintenant les compétences liées au terrain
## 12.0.6 - Le bazar d'Astrobazzarh
- Corrections de l'inventaire en bazar:
- un problème pouvait survenir en déplaçant les objets
l'inventaire, qui fait qu'un conteneur se retrouve récursivement dans son
@@ -291,22 +369,26 @@
- Fix: restaurer la compatibilité Foundry 11
## 12.0.5 - Les mauvais jours d'Astrobazzarh
- Fix: on peut de nouveau ouvrir l'édition de calendrier
- Fix: on ne peut plus ouvrir plusieurs fenêtres de lancer de sort
- Fix: Failed to execute 'getComputedStyle' on 'Window'
## 12.0.4 - La plaie d'Astrobazzarh
- **Support V12**
- Fix: les boutons d'encaissement dans le tchat fonctionnent de nouveau
- Fix warnings sur "Die" et AudioHelper
## 12.0.3 - L'hémorragie d'Astrobazzarh
- **Support V12**
- On peut de nouveau ouvrir un acteur blessé après redémarrage du monde
- On peut de nouveau ouvrir les Items avec une rareté par environnement
- Le choix de ne plus afficher les demandes de suppression est bien pris en compte
## 12.0.2 - Les pluies d'Astrobazzarh
- **Support V12**
- correction des actions techniques déleguées au MJ qui bloquaient les fenêtre de lancer de dés des joueurs (et plein d'autres)
- la fenêtre de calendrier s'ouvre correctement
@@ -321,13 +403,16 @@
- correction d'erreurs intempestives 'User ... lacks permission to update ...'
# 11.2
## 11.2.21 - Le questionnement d'Akarlikarlikar
- Une confirmation spécifique est demandée pour monter dans les terres médianes en cas de rencontre en attente
- L'expérience en caractéristique sur les jets de chance et rêve actuels est mise dans la caractéristique correspondante
- Les effets s'appliquent correctement sur les créatures
- La date et l'heure (draconiques) sont affichées dans les messages du tchat
## 11.2.20 - Le soulagement d'Akarlikarlikar
- L'option "ajout de la difficulté d'attaque à l'encaissement" est affichée comme un modificateur d'encaissement
- Les options d'encaissement alternatives fonctionnent avec la validation de l'encaissement par le gardien
- La fenêtre d'astrologie du gardien affiche toutes les heures lues par un personnage
@@ -337,12 +422,15 @@
- Les messages de récupération de rêve en cas de Rêve de Dragon sont clarifiés
## 11.2.19 - Les hémorroïdes d'Akarlikarlikar
- La validation des jets d'encaissement par le Gardien fonctionne de nouveau
## 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
@@ -351,35 +439,43 @@
- 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
- 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 une seule caractéristique peut recevoir de l'expérience, c'est attribué automatiquement
- Si la force est au maximum pour la taille personnage, on ne peut plus gagner d'expérience
## 11.2.9 - La barbe d'Akarlikarlikar
- Amélioration des textes de tooltips
- Les tooltips sont plus dans le thème de couleur du système Rêve de Dragon
- Ajouts d'icones pour les attaque/initiative/soins dans les raccourcis sur les tokens (HUD)
@@ -391,19 +487,23 @@
- Changement de l'icône d'état d'empoignade pour suivre les couleurs des autres icônes d'état
## 11.2.8 - L'éclairage d'Akarlikarlikar
- l'ajustement de la lumière jour/nuit s'étale sur moins de temps (vaisseau et Lyre)
- les nouveaux tooltips ne masquent plus l'information d'expérience
- les jets de dés pour maîtriser les rencontres fonctionnent de nouveau
## 11.2.7 - Les explications d'Akarlikarlikar
- Ajout de tooltips sur la plupart des boutons, liens clickables, objets, tâches, ...
- Fix: on peut de nouveau regarder l'inventaire avec les droits limités/observateur
## 11.2.6 - Les réveils difficiles d'Akarlikarlikar
- Les changements de points de Cœur sont temporaires jusqu'à fin Château Dormant
- Fix: tous les petits fixes (feuille qui s'ouvre plus, compagnons animaux, potions qui bloquent Château Dormant, ...)
## 11.2.2 - Les tendres moments d'Akarlikarlikar
- On peut maintenant avoir des points de Cœur pour des suivants/compagnons
- diminuer les points de coeurs fait perdre du moral
- on peut proposer un tendre moment
@@ -422,11 +522,14 @@
ne bloquent plus les jets de dés
## v11.2.1 - La technique d'Akarlikarlikar
- On peut créer des armes pour Corps à corps et Esquive. Barreaux de chaise, armes improvisées, techniques d'art martiaux, pas de côté pour faire trébucher l'adversaire... A vous de voir comment imaginer de nouvelles "armes".
- Les armes avec une résistance de 0 ne peuvent pas être utilisées, une image et un rappel indiquent qu'elles sont cassées
Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
## v11.2.0 - Les Terres médianes d'Akarlikarlikar
- Les TMRs sont redimensionables
- Nouveaux graphismes plus lisibles dans les TMRs
- Nouveau code couleur des icônes dans les TMR:
@@ -440,12 +543,15 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
- Fix: Les jets d'encaissement forcés par le gardien à un résultat inférieur à 11 ne peuvent plus donner un deuxième d10 négatif
# v11.1
## v11.1.6 - Les dissections de Werther de Zloth
- Fix: on peut de nouveau donner des compétences aux créatures
- Fix: le délai de guérison d'une blessure rétrogradée est correctement appliqué
- Fix: l'encaissement à valider par le MJ fonctionne de nouveau
## v11.1.5 - Werther de Zloth l'Onirique
- Fixes:
- la demande de défense ne marchait plus
- la tête réserve extensible crée bien une case de réserve extensible (à modifier)
@@ -460,6 +566,7 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
- pas de jets de vie pour les morts
## v11.1.4 - Werther de Zloth l'Onirique
- Ajout du facteur de significative à côté du pourcentage dans le résultat des jets de dés pour rappeler que le pourcentage n'est pas diviasé
- Fix: dans les TMRs, les tooltips affichent bien les informations de tous les effets sur la case
- Fix: la fatigue et l'éthylisme sont de nouveau pris en compte dans le calcul de l'éthylisme
@@ -469,15 +576,18 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
- Esthétique: ne pas afficher "+0" pour les ajustements de jets/encaissement
## v11.1.2 - Les vertèbres de Werther de Zloth
- Fix: les jets d'encaissement fonctionnent de nouveau normalement
- Macro "Mon personnage" permettant au joueur d'accéder à sa feuille de personnage depuis la barre de macros
## v11.1.1 - Les fumebols de Werther de Zloth
- Fix: on peut de nouveau afficher les vues détaillées
- Fix: on peut ouvrir les sacs et contenants portés par les véhicules et créatures
- Fix: cuisiner du gibier prend maintenant bien les proportaions en compte
## v11.1.0 - Les choix de Werther de Zloth
- Les options suivantes peuvent être désactivées:
- La transformation de stress à Château Dormant
- La récuperation de chance à Château Dormant
@@ -495,7 +605,9 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
- en cas de charge, les particulières sont toujours en force (p125)
# v11.0
## v11.0.28 - les fractures de Khrachtchoum
- La gravité de la blessure est affichée dans le résumé de l'encaissement
- Lors du changement d'acteur pendant le round
- le message annonçant le joueur dont c'est le tour ne contient plus d'informations de santé
@@ -507,12 +619,14 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
- le moral est indiqué avant l'icone d'appel au moral
## v11.0.27 - Khrachtchoum le méticuleux
- le tooltip dans les TMR reste visible si on ne bouge pas la souris
- le surencombrement n'affecte QUE les actions physiques
- on peut de nouveau fabriquer une potion depuis la fenêtre d'édition de l'herbe
- si les TMR sont minimisées alors qu'une action est requise, elles sont bien réaffichées lorsque l'action est faite
## v11.0.26 - le crépuscule de Khrachtchoum
- gestion correcte des TMRs
- les TMRs ne sont jamais minimisées (par le système) quand le haut-rêvant est en demi-rêve
- lorsqu'une fenêtre liée aux demi-rêve est affichée, cliquer sur les TMRs n'a pas d'effet
@@ -531,45 +645,57 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
- les jets de compétences d'attaque des créatures fonctionnent de nouveau
## v11.0.25 - la vision du rêve de Khrachtchoum
- Les TMRs restent affichées tant que le Haut-rêvant est en demi-rêve
## v11.0.24 - les couleurs de Khrachtchoum
- nouvelle carte des TMRs
## v11.0.23 - la lumière de Khrachtchoum
- ajustement automatique de la luminosité selon l'heure pour les scènes:
- avec une vision des tokens (sinon: ce n'est pas une scène de carte pour tokens)
- avec illumination globale (correspondant à une illumination extérieure)
- quand lampe "allumée" dans la fenêtre du calendrier
- avec une vision des tokens (sinon: ce n'est pas une scène de carte pour tokens)
- avec illumination globale (correspondant à une illumination extérieure)
- quand lampe "allumée" dans la fenêtre du calendrier
## v11.0.22 - les automatismes de Khrachtchoum le Problémeux
- Macro pour attaquer avec les compétences de créatures
## v11.0.20
- Macro pour attaquer avec les armes des personnages
## v11.0.17
- Fix: les actions de commerce ne s'appliquait pas bien aux personnages des tokens non liés
## v11.0.15 - L'apprentissage de Khrachtchoum
- Fix: l'expérience ne s'appliquait plus sur certaines réussites particulières (régression depuis la 11.0.7)
## v11.0.14 - Les pincettes de Khrachtchoum le Problémeux
- Correction du calcul de la place restante lors de l'ajout dans un conteneur
## v11.0.13 - La multiplication de l'eau de Khrachtchoum le Problémeux
- Correction de la vente depuis un commerce ayant des quantités illimitées
## v11.0.12 - Les poids de la mesure de Khrachtchoum le Problémeux
- Correction des malus de surencombrement
- Le malus armure est correctement affiché dans l'onglet des caractéristiques
- Correction d'orthographe et amélioration des messages des oeuvres d'art
## v11.0.11 - Les bleus de Khrachtchoum le Problémeux
- si le gardien configure le sommeil, les joueurs sont notifiés que chateau dormant vient de passer
- possibilité de créer des armes et des compétences de créatures non-mortelles.
## v11.0.10 - Les Songes de Khrachtchoum le Problémeux
- on peut de nouveau se déplacer dans les TMRs d'un clic sur la case à atteindre
- Lire un livre depuis l'inventaire permet de nouveau de faire un jet de la tâche
créée au lieu de créer toujours une nouvelle tâche
@@ -580,12 +706,14 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi
les heures dormies sont déduites des heures restant à dormir
## v11.0.9 - Les Souvenirs de Khrachtchoum le Problémeux
- mode de saisie de l'archétype en vue détaillée
- création une nouvelle incarnation depuis l'archétype
- réorganisation de la fenêtre de sélection des règles optionnelles
- correction de l'affichage du type dans les fenêtres d'objets
## v11.0.8 - la poigne de Sémolosse
- lien vers le changelog
- organisation des compendiums du système
- correction de l'empoignade

View File

@@ -79,6 +79,11 @@ select,
:root {
/* =================== 2. DEBUGGING HIGHLIGHTERS ============ */
/* =================== 3. some constants ============ */
--fieldset-background: url(/ui/parchment.jpg);
--rdd-color-text-primary: rgba(10, 10, 10, 0.9);
--rdd-input-background: rgba(0, 0, 0, 0.05);
--rdd-color-border-input: rgba(0, 0, 0, 0.2);
--rdd-bg-input: rgba(255, 255, 255, 0.1);
--color-controls: rgba(0, 0, 0, 0.9);
--color-controls-light: hsla(0, 0%, 20%, 0.8);
--color-controls-hover: hsla(60, 100%, 75%, 0.7);
@@ -127,8 +132,8 @@ select,
/*--------------------------------------------------------------------------*/
/* Control, Tool, hotbar & navigation */
/* Tooltip container */
/* Tooltip text */
/* Show the tooltip text when you mouse over the tooltip container */
/* html Tooltips html*/
/* Dropdown Content (Hidden by Default) */
/* Change the background color of the dropdown button when the dropdown content is shown */
/* Show the dropdown menu on hover */
@@ -139,30 +144,274 @@ select,
/*when navigating through the items using the arrow keys:*/
/*************************************************************/
}
.system-foundryvtt-reve-de-dragon .application.sheet.fvtt-rdd .window-content {
.system-foundryvtt-reve-de-dragon .monnaie-content {
padding: 0px;
background: #011d33 url(../assets/ui/bg_header.webp) no-repeat left top;
color: #ffffff;
}
.system-foundryvtt-reve-de-dragon .monnaie-content .editor,
.system-foundryvtt-reve-de-dragon .monnaie-content .editor-content {
height: auto;
min-height: 100px;
background: var(--rdd-bg-input-alt);
padding: 5px;
border-radius: 3px;
color: var(--rdd-color-text-primary);
}
.system-foundryvtt-reve-de-dragon .monnaie-content .window-content {
font-family: CaslonAntique;
text-align: justify;
font-size: 1rem;
letter-spacing: 1px;
padding: 0% 0 0 0;
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background: var(--background-image-base) no-repeat;
background-size: 100% 100%;
}
.system-foundryvtt-reve-de-dragon .application.sheet.fvtt-rdd section.window-content {
padding: 0rem;
.system-foundryvtt-reve-de-dragon .monnaie-content fieldset {
background: var(--fieldset-background);
color: var(--rdd-color-text-primary);
margin-bottom: 4px;
border-radius: 6px;
border-color: var(--rdd-color-text-primary);
border-width: 2px;
}
.system-foundryvtt-reve-de-dragon .application.sheet.fvtt-rdd section.window-content section header.sheet-header {
background: #011d33 url(../assets/ui/bg_header.webp) no-repeat left top;
color: #ffffff;
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
padding: 2px 0;
border-bottom: 1px solid var(--rdd-color-shadow-primary);
font-size: 0.9rem;
}
.system-foundryvtt-reve-de-dragon .application.sheet.fvtt-rdd section.window-content section header.sheet-header :is(
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group label {
font-weight: normal;
flex: 2;
padding-left: 5px;
margin: 0;
color: var(--rdd-color-text-primary);
}
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group .attribute-value,
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group input[type="text"],
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group input[type="number"],
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group select {
flex: 3;
background: var(--rdd-input-background);
border: 1px solid var(--rdd-color-border-input);
color: var(--rdd-color-text-input);
padding: 2px 2px;
border-radius: 3px;
}
.system-foundryvtt-reve-de-dragon .monnaie-content .form-group input[type="checkbox"] {
flex: 0 0 20px;
margin-left: 5px;
}
.system-foundryvtt-reve-de-dragon .monnaie-content .sheet-header-row {
display: flex;
flex-direction: row;
align-items: center;
}
.system-foundryvtt-reve-de-dragon .monnaie-content .sheet-header-row h1,
.system-foundryvtt-reve-de-dragon .monnaie-content .sheet-header-row input {
font-family: CaslonAntique;
font-size: 2.5rem;
font-weight: normal;
color: var(--window-header-title-color);
margin: 4px;
height: 3rem;
}
.system-foundryvtt-reve-de-dragon .monnaie-content :is(
input[type="text"],
input[type="number"],
input[type="password"],
input[type="datetime-local"],
input[type="date"],
input[type="time"]) {
input[type="time"]
) {
color: rgba(255, 255, 255, 0.75);
background: rgba(255, 255, 255, 0.1);
border: 0 none;
margin-bottom: 0.2rem;
}
.system-foundryvtt-reve-de-dragon .munition-content {
padding: 0px;
background: #011d33 url(../assets/ui/bg_header.webp) no-repeat left top;
color: #ffffff;
}
.system-foundryvtt-reve-de-dragon .munition-content .editor,
.system-foundryvtt-reve-de-dragon .munition-content .editor-content {
height: auto;
min-height: 100px;
background: var(--rdd-bg-input-alt);
padding: 5px;
border-radius: 3px;
color: var(--rdd-color-text-primary);
}
.system-foundryvtt-reve-de-dragon .munition-content .window-content {
font-family: CaslonAntique;
text-align: justify;
font-size: 1rem;
letter-spacing: 1px;
padding: 0% 0 0 0;
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background-size: 100% 100%;
}
.system-foundryvtt-reve-de-dragon .munition-content fieldset {
background: var(--fieldset-background);
color: var(--rdd-color-text-primary);
margin-bottom: 4px;
border-radius: 6px;
border-color: var(--rdd-color-text-primary);
border-width: 2px;
}
.system-foundryvtt-reve-de-dragon .munition-content .form-group {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
padding: 2px 0;
border-bottom: 1px solid var(--rdd-color-shadow-primary);
font-size: 0.9rem;
}
.system-foundryvtt-reve-de-dragon .munition-content .form-group label {
font-weight: normal;
flex: 2;
padding-left: 5px;
margin: 0;
color: var(--rdd-color-text-primary);
}
.system-foundryvtt-reve-de-dragon .munition-content .form-group .attribute-value,
.system-foundryvtt-reve-de-dragon .munition-content .form-group input[type="text"],
.system-foundryvtt-reve-de-dragon .munition-content .form-group input[type="number"],
.system-foundryvtt-reve-de-dragon .munition-content .form-group select {
flex: 3;
background: var(--rdd-input-background);
border: 1px solid var(--rdd-color-border-input);
color: var(--rdd-color-text-input);
padding: 2px 2px;
border-radius: 3px;
}
.system-foundryvtt-reve-de-dragon .munition-content .form-group input[type="checkbox"] {
flex: 0 0 20px;
margin-left: 5px;
}
.system-foundryvtt-reve-de-dragon .munition-content .sheet-header-row {
display: flex;
flex-direction: row;
align-items: center;
}
.system-foundryvtt-reve-de-dragon .munition-content .sheet-header-row h1,
.system-foundryvtt-reve-de-dragon .munition-content .sheet-header-row input {
font-family: CaslonAntique;
font-size: 2.5rem;
font-weight: normal;
color: var(--window-header-title-color);
margin: 4px;
height: 3rem;
}
.system-foundryvtt-reve-de-dragon .munition-content :is(
input[type="text"],
input[type="number"],
input[type="password"],
input[type="datetime-local"],
input[type="date"],
input[type="time"]
) {
color: rgba(255, 255, 255, 0.75);
background: rgba(255, 255, 255, 0.1);
border: 0 none;
margin-bottom: 0.2rem;
}
.system-foundryvtt-reve-de-dragon .tarot-content {
padding: 0px;
background: #011d33 url(../assets/ui/bg_header.webp) no-repeat left top;
color: #ffffff;
}
.system-foundryvtt-reve-de-dragon .tarot-content .editor,
.system-foundryvtt-reve-de-dragon .tarot-content .editor-content {
height: auto;
min-height: 100px;
background: var(--rdd-bg-input-alt);
padding: 5px;
border-radius: 3px;
color: var(--rdd-color-text-primary);
}
.system-foundryvtt-reve-de-dragon .tarot-content .window-content {
font-family: CaslonAntique;
text-align: justify;
font-size: 1rem;
letter-spacing: 1px;
padding: 0% 0 0 0;
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background-size: 100% 100%;
}
.system-foundryvtt-reve-de-dragon .tarot-content fieldset {
background: var(--fieldset-background);
color: var(--rdd-color-text-primary);
margin-bottom: 4px;
border-radius: 6px;
border-color: var(--rdd-color-text-primary);
border-width: 2px;
}
.system-foundryvtt-reve-de-dragon .tarot-content .form-group {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
padding: 2px 0;
border-bottom: 1px solid var(--rdd-color-shadow-primary);
font-size: 0.9rem;
}
.system-foundryvtt-reve-de-dragon .tarot-content .form-group label {
font-weight: normal;
flex: 2;
padding-left: 5px;
margin: 0;
color: var(--rdd-color-text-primary);
}
.system-foundryvtt-reve-de-dragon .tarot-content .form-group .attribute-value,
.system-foundryvtt-reve-de-dragon .tarot-content .form-group input[type="text"],
.system-foundryvtt-reve-de-dragon .tarot-content .form-group input[type="number"],
.system-foundryvtt-reve-de-dragon .tarot-content .form-group select {
flex: 3;
background: var(--rdd-input-background);
border: 1px solid var(--rdd-color-border-input);
color: var(--rdd-color-text-input);
padding: 2px 2px;
border-radius: 3px;
}
.system-foundryvtt-reve-de-dragon .tarot-content .form-group input[type="checkbox"] {
flex: 0 0 20px;
margin-left: 5px;
}
.system-foundryvtt-reve-de-dragon .tarot-content .sheet-header-row {
display: flex;
flex-direction: row;
align-items: center;
}
.system-foundryvtt-reve-de-dragon .tarot-content .sheet-header-row h1,
.system-foundryvtt-reve-de-dragon .tarot-content .sheet-header-row input {
font-family: CaslonAntique;
font-size: 2.5rem;
font-weight: normal;
color: var(--window-header-title-color);
margin: 4px;
height: 3rem;
}
.system-foundryvtt-reve-de-dragon .tarot-content :is(
input[type="text"],
input[type="number"],
input[type="password"],
input[type="datetime-local"],
input[type="date"],
input[type="time"]
) {
color: rgba(255, 255, 255, 0.75);
background: rgba(255, 255, 255, 0.1);
border: 0 none;
@@ -171,8 +420,9 @@ select,
.system-foundryvtt-reve-de-dragon .window-header {
background: rgba(0, 0, 0, 0.75);
}
.system-foundryvtt-reve-de-dragon .application .window-content,
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content {
margin: 0;
margin: 0.2rem;
padding: 0;
}
.system-foundryvtt-reve-de-dragon section.window-content div.dialog-buttons {
@@ -472,6 +722,7 @@ select,
margin: 0;
justify-content: center;
text-align: left;
display: ruby;
}
.system-foundryvtt-reve-de-dragon .equipement-valeur {
margin: 0;
@@ -491,6 +742,8 @@ select,
align-items: center;
justify-content: center;
text-align: center;
display: flex;
flex-direction: row;
}
.system-foundryvtt-reve-de-dragon .equipement-button {
margin: 0;
@@ -604,6 +857,7 @@ select,
max-width: 1.5em;
max-height: 1.5em;
border-width: 0;
display: inline;
}
.system-foundryvtt-reve-de-dragon .dimmed {
opacity: 50%;
@@ -622,13 +876,40 @@ select,
padding: 0.2em;
border-width: 0;
}
.system-foundryvtt-reve-de-dragon .small-button-direction {
.system-foundryvtt-reve-de-dragon .grid-move-tmr {
display: grid;
}
.system-foundryvtt-reve-de-dragon .move-tmr-topleft {
grid-column: 2/2;
grid-row: 2/4;
}
.system-foundryvtt-reve-de-dragon .move-tmr-top {
grid-column: 3/3;
grid-row: 1/3;
}
.system-foundryvtt-reve-de-dragon .move-tmr-topright {
grid-column: 4/4;
grid-row: 2/4;
}
.system-foundryvtt-reve-de-dragon .move-tmr-bottomleft {
grid-column: 2/2;
grid-row: 4/6;
}
.system-foundryvtt-reve-de-dragon .move-tmr-bottom {
grid-column: 3/3;
grid-row: 5/7;
}
.system-foundryvtt-reve-de-dragon .move-tmr-bottomright {
grid-column: 4/4;
grid-row: 4/6;
}
.system-foundryvtt-reve-de-dragon .tmr-move {
max-height: 32px;
max-width: 32px;
border: 0;
vertical-align: bottom;
}
.system-foundryvtt-reve-de-dragon :is(.button-img,.button-effect-img,.small-button-direction):hover {
.system-foundryvtt-reve-de-dragon :is(.button-img,.button-effect-img,.tmr-move):hover {
color: var(--color-controls-hover);
border: 1px solid var(--color-control-border-hover);
text-shadow: 1px 0px 0px #ff6600;
@@ -733,13 +1014,13 @@ select,
margin-inline: 0.1rem;
margin-block: 0.1rem;
}
.system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd fieldset :is(label, input) {
.system-foundryvtt-reve-de-dragon .app.sheet fieldset :is(label, input) {
font-family: CaslonAntique;
text-align: justify;
font-size: 1rem;
letter-spacing: 1px;
}
.system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd div.form-group {
.system-foundryvtt-reve-de-dragon .app.sheet div.form-group {
clear: both;
display: flex;
flex-direction: row;
@@ -747,14 +1028,15 @@ select,
margin: 0.1rem 0;
align-items: center;
}
.system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd .editor.prosemirror {
.system-foundryvtt-reve-de-dragon .app.sheet .editor.prosemirror {
height: fit-content;
min-height: 5rem;
}
.system-foundryvtt-reve-de-dragon form.application.sheet.fvtt-rdd prose-mirror.prosemirror .editor-container {
.system-foundryvtt-reve-de-dragon .app.sheet .editor.prosemirror .editor-container {
min-height: 5rem;
height: fit-content;
height: 8rem;
margin: 0;
flex: none;
}
.system-foundryvtt-reve-de-dragon .large-editor {
border: 2;
@@ -903,12 +1185,12 @@ select,
font-weight: bold;
background-color: lightblue;
}
.system-foundryvtt-reve-de-dragon div.placeholder-resolution span.table-proba-reussite {
.system-foundryvtt-reve-de-dragon span.table-proba-reussite {
font-size: 0.8rem;
padding: 5px;
}
.system-foundryvtt-reve-de-dragon .poesie-extrait {
font-size: 0.9rem;
font-size: 0.8rem;
font-style: italic;
}
.system-foundryvtt-reve-de-dragon .poesie-reference {
@@ -1042,8 +1324,7 @@ select,
white-space: nowrap;
word-break: break-all;
}
.system-foundryvtt-reve-de-dragon span.content-link,
.system-foundryvtt-reve-de-dragon a.content-link {
.system-foundryvtt-reve-de-dragon .content-link {
background: hsla(45, 100%, 80%, 0.2);
color: hsla(300, 70%, 20%, 0.8);
font-weight: 560;
@@ -1052,6 +1333,7 @@ select,
border-radius: 0.25rem;
white-space: nowrap;
word-break: break-all;
display: ruby;
}
.system-foundryvtt-reve-de-dragon a.roll-text i.fas {
color: var(--color-text-dark-inactive);
@@ -1080,7 +1362,7 @@ select,
width: 100%;
max-width: 90%;
}
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .tooltip:hover .tooltiptext {
.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content :is(.tooltip, .tooltip-overflow):hover .tooltiptext {
top: 2rem;
left: 2rem;
margin: 0;
@@ -1288,6 +1570,8 @@ select,
.system-foundryvtt-reve-de-dragon .list-item-label,
.system-foundryvtt-reve-de-dragon .list-title-label {
flex-grow: 2;
display: flex;
flex-direction: row;
}
.system-foundryvtt-reve-de-dragon .attribut-value,
.system-foundryvtt-reve-de-dragon .carac-value {
@@ -1339,9 +1623,13 @@ select,
.system-foundryvtt-reve-de-dragon table.table-nombres-astraux th > td {
font-size: 1rem;
}
.system-foundryvtt-reve-de-dragon table.table-nombres-astraux tr > td {
.system-foundryvtt-reve-de-dragon table.table-nombres-astraux tr td {
font-size: 0.8rem;
}
.system-foundryvtt-reve-de-dragon table.table-nombres-astraux tr td.info-acteur {
flex-direction: row;
display: flex;
}
.system-foundryvtt-reve-de-dragon table.table-nombres-astraux :is(tr, th, td) {
border-style: solid;
border-width: 1px;
@@ -1487,9 +1775,11 @@ select,
background: rgba(0, 0, 0, 0.05);
cursor: pointer;
}
.system-foundryvtt-reve-de-dragon .chat-message {
background: rgba(220, 220, 210, 0.5);
font-size: 1rem;
.system-foundryvtt-reve-de-dragon .chat-message h4 {
font-size: 0.9rem;
}
.system-foundryvtt-reve-de-dragon .chat-message .message-content {
text-align: justify;
}
.system-foundryvtt-reve-de-dragon .chat-message header.message-header .heure-rdd {
font-size: 0.7rem;
@@ -1499,6 +1789,9 @@ select,
background: rgba(220, 220, 210, 0.75);
border: 2px solid #545469;
}
.system-foundryvtt-reve-de-dragon .chat-message hr {
margin: 0.2rem 0;
}
.system-foundryvtt-reve-de-dragon .chat-icon {
border: 0;
padding: 2px 6px 2px 2px;
@@ -1513,6 +1806,13 @@ select,
padding: 1px;
vertical-align: text-top;
}
.system-foundryvtt-reve-de-dragon .actor-img-small {
max-width: 1.5rem;
max-height: 1.5rem;
flex-grow: 0;
margin-right: 0.2rem;
vertical-align: bottom;
}
.system-foundryvtt-reve-de-dragon #sidebar-tabs {
flex: 0 0 28px;
box-sizing: border-box;
@@ -1911,8 +2211,6 @@ select,
display: grid;
background: hsl(0, 0%, 20%);
color: hsla(0, 0%, 80%, 0.8);
grid-row: 1;
grid-column: 10;
}
.system-foundryvtt-reve-de-dragon .calendar-boutons-heure .calendar-btn:is(.calendar-lyre,.calendar-vaisseau) img {
color: hsla(0, 0%, 100%, 0.5);
@@ -1925,40 +2223,38 @@ select,
.system-foundryvtt-reve-de-dragon .calendar-boutons-heure i {
border: 1px solid rgba(0, 0, 0, 0);
}
.system-foundryvtt-reve-de-dragon .calendar-boutons-heure i:hover {
.system-foundryvtt-reve-de-dragon .calendar-boutons-heure a:hover {
color: var(--color-controls-hover);
border: 1px solid var(--color-control-border-hover);
cursor: pointer;
}
.system-foundryvtt-reve-de-dragon .calendar-1min {
grid-column: 1;
grid-column: 1/1;
}
.system-foundryvtt-reve-de-dragon .calendar-5min {
grid-column: 2;
grid-column: 2/2;
}
.system-foundryvtt-reve-de-dragon .calendar-15min {
grid-column: 3;
grid-column: 3/3;
}
.system-foundryvtt-reve-de-dragon .calendar-30min {
grid-column: 4;
grid-column: 4/4;
}
.system-foundryvtt-reve-de-dragon .calendar-60min {
grid-column: 5;
grid-column: 5/5;
}
.system-foundryvtt-reve-de-dragon .calendar-1heure {
grid-column: 6;
grid-column: 6/6;
}
.system-foundryvtt-reve-de-dragon .calendar-lyre {
grid-column: 7;
grid-column: 7/8;
}
.system-foundryvtt-reve-de-dragon .calendar-vaisseau {
grid-column: 8;
grid-column: 9/10;
}
.system-foundryvtt-reve-de-dragon .calendar-set-datetime {
grid-column: 9;
}
.system-foundryvtt-reve-de-dragon .calendar-astrologie {
grid-column: 10;
.system-foundryvtt-reve-de-dragon :is(.calendar-lyre,.calendar-vaisseau) {
display: flex;
flex-direction: row;
}
.system-foundryvtt-reve-de-dragon div.horloge-analogique {
border: none;
@@ -1993,11 +2289,26 @@ select,
position: relative;
display: inline-block;
}
.system-foundryvtt-reve-de-dragon .tooltip-overflow {
display: inline-block;
}
.system-foundryvtt-reve-de-dragon .tooltip-dotted {
border-bottom: 1px dotted black;
/* If you want dots under the hoverable text */
}
.system-foundryvtt-reve-de-dragon .tooltip .tooltiptext {
.system-foundryvtt-reve-de-dragon div.message-content span .tooltip-overflow {
overflow: visible;
position: absolute;
}
.system-foundryvtt-reve-de-dragon div.message-content span .tooltip-overflow span {
overflow: visible;
position: relative;
}
.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow):hover .tooltiptext {
visibility: visible;
opacity: 1;
}
.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .tooltiptext {
text-align: center;
/* Position the tooltip text */
position: absolute;
@@ -2007,10 +2318,7 @@ select,
opacity: 0;
transition: opacity 0.3s;
}
.system-foundryvtt-reve-de-dragon .tooltip .left-competence {
transform: translate(-100%, 0%);
}
.system-foundryvtt-reve-de-dragon .tooltip .ttt-fatigue {
.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .ttt-fatigue {
width: 360px;
background: rgba(30, 25, 20, 0.9);
border-image: url(../assets/ui/bg_control.webp) 21 repeat;
@@ -2021,29 +2329,24 @@ select,
font-size: 0.8rem;
padding: 3px 0;
}
.system-foundryvtt-reve-de-dragon .tooltip .ttt-ajustements {
width: 150px;
.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .ttt-ajustements {
width: 10rem;
background: var(--background-tooltip);
border-radius: 6px;
font-size: 0.9rem;
padding: 3px 0;
}
.system-foundryvtt-reve-de-dragon .tooltip .ttt-titre {
text-align: justify;
width: 100%;
top: 30px;
background: var(--background-tooltip);
border-radius: 6px;
font-size: 0.9rem;
padding: 3px;
.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .ttt-ajustements div:nth-child(odd) {
background: var(--background-tooltip-alt);
}
.system-foundryvtt-reve-de-dragon aside#tooltip {
max-width: 15rem;
background: var(--background-tooltip);
/*color: var(--color-text-dark-primary);*/
color: rgba(100, 100, 50, 0.85);
font-size: 1rem;
font-size: 0.9rem;
border-radius: 0.2rem;
padding: 0.4rem;
padding: 0.3rem;
font-family: "CaslonAntique";
}
.system-foundryvtt-reve-de-dragon aside#tooltip span.reference {
color: var(--color-tooltip);
@@ -2052,17 +2355,6 @@ select,
.system-foundryvtt-reve-de-dragon aside#tooltip .toolclip p.faint {
color: var(--color-tooltip-faint);
}
.system-foundryvtt-reve-de-dragon .tooltip :is(.ttt-xp,.ttt-levelup) {
width: 250px;
background: var(--background-tooltip) !important;
border-radius: 6px;
font-size: 0.9rem;
padding: 3px 0;
}
.system-foundryvtt-reve-de-dragon .tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
.system-foundryvtt-reve-de-dragon .chat-card-button,
.system-foundryvtt-reve-de-dragon .chat-card-button-pushed {
border-radius: 0.2rem;

View File

@@ -19,7 +19,7 @@ const css = gulp.series(compileLESS);
/* ----------------------------------------- */
/* Watch Updates
/* ----------------------------------------- */
const SIMPLE_LESS = ["less/*.less"];
const SIMPLE_LESS = ["less/*.less", "less/item/*.less"];
function watchUpdates() {
gulp.watch(SIMPLE_LESS, css);

View File

@@ -1,15 +1,21 @@
:root {
/* =================== 2. DEBUGGING HIGHLIGHTERS ============ */
/* =================== 2. DEBUGGING HIGHLIGHTERS ============ */
// --debug-background-color-red: #ff000054;
// --debug-background-color-blue: #1d00ff54;
// --debug-background-color-green: #54ff0054;
// --debug-box-shadow-red: inset 0 0 2px red;
// --debug-box-shadow-blue: inset 0 0 2px blue;
// --debug-box-shadow-green: inset 0 0 2px green;
/* =================== 3. some constants ============ */
--fieldset-background: url(/ui/parchment.jpg);
--rdd-color-text-primary: rgba(10, 10, 10, 0.9);
--rdd-input-background:rgba(0, 0, 0, 0.05);
--rdd-color-border-input: rgba(0, 0, 0, 0.2);
--rdd-bg-input: rgba(255, 255, 255, 0.1);
--color-controls:rgba(0, 0, 0, 0.9);
--color-controls-light:hsla(0, 0%, 20%, 0.8);
--color-controls-hover:hsla(60, 100%, 75%, 0.7);
@@ -30,9 +36,9 @@
hsla(250, 30%, 30%, 0.7) 50%,
hsla(250, 50%, 40%, 0.1) 75%,
hsla(30, 30%, 40%, 0.1) 75%,
hsla(50, 100%, 80%, 0.7)
hsla(50, 100%, 80%, 0.7)
);
--background-custom-button: linear-gradient(to bottom, rgba(33, 55, 74, 0.988) 5%, rgba(21, 40, 51, 0.671) 100%);
--background-custom-button-hover: linear-gradient(to bottom, rgb(128, 0, 0) 5%, rgb(62, 1, 1) 100%);
--background-control-selected: linear-gradient(to bottom, hsla(0, 100%, 25%, 0.5) 5%, hsla(0, 100%, 12%, 0.5) 100%);
@@ -42,4 +48,3 @@
--background-error:hsla(16, 100%, 50%, 0.8);
--color-profile-border: hsla(0, 0%, 80%, 0.05);
}

View File

@@ -80,5 +80,5 @@
.sheet header.sheet-header .header-compteurs,
.sheet header.sheet-header .flex-group-center.flex-fatigue,
select, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
font-family: "CaslonAntique"; /* For sheet parts; For nav and title */
font-family: "CaslonAntique"; /* For sheet parts; For nav and title */
}

View File

@@ -4,6 +4,8 @@
.system-foundryvtt-reve-de-dragon {
@import "sheets.less";
@import "item/monnaie.less";
@import "item/munition.less";
@import "item/tarot.less";
// body {
// --input-height: 1.4rem;
@@ -13,8 +15,9 @@
background: rgba(0,0,0,0.75);
}
.application .window-content,
.window-app.sheet .window-content {
margin: 0;
margin: 0.2rem;
padding: 0;
}
@@ -215,7 +218,6 @@
padding: 0;
}
.grid-competence-archetype {
display: grid;
grid-column: span 3 / span 3;
@@ -354,6 +356,7 @@
margin: 0;
justify-content: center;
text-align: left;
display: ruby;
}
.equipement-valeur {
margin: 0;
@@ -373,6 +376,8 @@
align-items: center;
justify-content: center;
text-align: center;
display: flex;
flex-direction: row;
}
.equipement-button {
margin: 0;
@@ -492,6 +497,7 @@
max-width: 1.5em;
max-height: 1.5em;
border-width: 0;
display: inline;
}
.dimmed {
opacity: 50%;
@@ -510,13 +516,21 @@
padding: 0.2em;
border-width: 0;
}
.small-button-direction {
.grid-move-tmr { display: grid; }
.move-tmr-topleft { grid-column: 2/2; grid-row: 2/4;}
.move-tmr-top { grid-column: 3/3; grid-row: 1/3; }
.move-tmr-topright { grid-column: 4/4; grid-row: 2/4; }
.move-tmr-bottomleft { grid-column: 2/2; grid-row: 4/6; }
.move-tmr-bottom { grid-column: 3/3; grid-row: 5/7; }
.move-tmr-bottomright{ grid-column: 4/4; grid-row: 4/6; }
.tmr-move {
max-height: 32px;
max-width: 32px;
border: 0;
vertical-align: bottom;
}
:is(.button-img,.button-effect-img,.small-button-direction):hover {
:is(.button-img,.button-effect-img,.tmr-move):hover {
color: var(--color-controls-hover);
border: 1px solid var(--color-control-border-hover);
text-shadow: 1px 0px 0px #ff6600;
@@ -622,13 +636,14 @@
margin-inline: 0.1rem;
margin-block: 0.1rem;
}
form.application.sheet.fvtt-rdd fieldset :is(label, input) {
.app.sheet fieldset :is(label, input) {
font-family: CaslonAntique;
text-align: justify;
font-size: 1rem;
letter-spacing: 1px;
}
form.application.sheet.fvtt-rdd div.form-group {
.app.sheet div.form-group {
clear: both;
display: flex;
flex-direction: row;
@@ -636,15 +651,17 @@
margin: 0.1rem 0;
align-items: center;
}
form.application.sheet.fvtt-rdd .editor.prosemirror {
.app.sheet .editor.prosemirror {
height: fit-content;
min-height: 5rem;
}
form.application.sheet.fvtt-rdd prose-mirror.prosemirror .editor-container {
.app.sheet .editor.prosemirror .editor-container {
min-height: 5rem;
height: fit-content;
height: 8rem;
margin: 0;
flex: none;
}
.large-editor {
border: 2;
height: fit-content;
@@ -793,6 +810,7 @@
font-size: 0.8rem;
text-align: right;
}
.placeholder-ajustements {
flex-direction: column;
}
@@ -805,13 +823,13 @@
background-color: lightblue;
}
div.placeholder-resolution span.table-proba-reussite{
span.table-proba-reussite{
font-size: 0.8rem;
padding: 5px;
}
.poesie-extrait {
font-size: 0.9rem;
font-size: 0.8rem;
font-style: italic;
}
.poesie-reference{
@@ -960,8 +978,7 @@
word-break: break-all;
}
span.content-link,
a.content-link {
.content-link {
background: hsla(45, 100%, 80%, 0.2);
color: hsla(300, 70%, 20%, 0.8);
font-weight: 560;
@@ -970,6 +987,7 @@
border-radius: 0.25rem;
white-space: nowrap;
word-break: break-all;
display: ruby;
}
a.roll-text i.fas{
color: var(--color-text-dark-inactive);
@@ -1002,7 +1020,7 @@
max-width: 90%;
}
.window-app.sheet .window-content .tooltip:hover .tooltiptext {
.window-app.sheet .window-content :is(.tooltip, .tooltip-overflow):hover .tooltiptext {
top: 2rem;
left: 2rem;
margin: 0;
@@ -1220,6 +1238,8 @@
.list-item-label,
.list-title-label {
flex-grow: 2;
display: flex;
flex-direction: row;
}
.attribut-value,
.carac-value {
@@ -1273,9 +1293,13 @@
table.table-nombres-astraux th >td {
font-size: 1rem;
}
table.table-nombres-astraux tr >td {
table.table-nombres-astraux tr td {
font-size: 0.8rem;
}
table.table-nombres-astraux tr td.info-acteur {
flex-direction: row;
display: flex;
}
table.table-nombres-astraux :is(tr, th, td) {
border-style: solid;
border-width: 1px;
@@ -1447,11 +1471,13 @@
cursor: pointer;
}
.chat-message {
background: rgba(220,220,210,0.5);
font-size: 1rem;
}
.chat-message h4 {
font-size: 0.9rem;
}
.chat-message .message-content {
text-align: justify;
}
.chat-message header.message-header .heure-rdd {
font-size: 0.7rem;
flex-grow: 3;
@@ -1461,6 +1487,11 @@
background: rgba(220,220,210,0.75);
border: 2px solid #545469;
}
.chat-message hr {
margin: 0.2rem 0;
}
.chat-icon {
border: 0;
padding: 2px 6px 2px 2px;
@@ -1476,6 +1507,14 @@
vertical-align: text-top;
}
.actor-img-small {
max-width: 1.5rem;
max-height: 1.5rem;
flex-grow: 0;
margin-right: 0.2rem;
vertical-align: bottom;
}
#sidebar-tabs {
flex: 0 0 28px;
box-sizing: border-box;
@@ -1753,9 +1792,6 @@
display: grid;
background: hsla(0, 0%, 20%, 1);
color: hsla(0, 0%, 80%, 0.8);
grid-row: 1;
grid-column: 10;
}
.calendar-boutons-heure .calendar-btn:is(.calendar-lyre,.calendar-vaisseau) img {
@@ -1770,23 +1806,24 @@
.calendar-boutons-heure i {
border: 1px solid rgba(0, 0, 0, 0);
}
.calendar-boutons-heure i:hover {
.calendar-boutons-heure a:hover {
color: var(--color-controls-hover);
border: 1px solid var(--color-control-border-hover);
cursor: pointer;
}
.calendar-1min { grid-column: 1;}
.calendar-5min { grid-column: 2;}
.calendar-15min { grid-column: 3;}
.calendar-30min { grid-column: 4;}
.calendar-60min { grid-column: 5;}
.calendar-1heure { grid-column: 6;}
.calendar-lyre { grid-column: 7;}
.calendar-vaisseau { grid-column: 8;}
.calendar-set-datetime { grid-column: 9;}
.calendar-astrologie { grid-column: 10;}
.calendar-1min { grid-column: 1/1; }
.calendar-5min { grid-column: 2/2; }
.calendar-15min { grid-column: 3/3; }
.calendar-30min { grid-column: 4/4; }
.calendar-60min { grid-column: 5/5; }
.calendar-1heure { grid-column: 6/6; }
.calendar-lyre { grid-column: 7/8; }
.calendar-vaisseau { grid-column: 9/10; }
:is(.calendar-lyre,.calendar-vaisseau) {
display: flex;
flex-direction: row;
}
div.horloge-analogique {
border: none;
margin: 0;
@@ -1827,66 +1864,78 @@
position: relative;
display: inline-block;
}
.tooltip-overflow {
display: inline-block;
}
.tooltip-dotted {
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
}
/* Tooltip text */
.tooltip .tooltiptext {
text-align: center;
/* Position the tooltip text */
div.message-content span .tooltip-overflow {
overflow: visible;
position: absolute;
z-index: 1;
/* Fade in tooltip */
visibility: hidden;
opacity: 0;
transition: opacity 0.3s;
span {
overflow: visible;
position: relative;
}
}
.tooltip .left-competence {
transform: translate(-100%, 0%);
/* Show the tooltip text when you mouse over the tooltip container */
:is(.tooltip, .tooltip-overflow):hover {
.tooltiptext {
visibility: visible;
opacity: 1;
}
}
/* html Tooltips html*/
:is(.tooltip, .tooltip-overflow){
.tooltiptext {
text-align: center;
/* Position the tooltip text */
position: absolute;
z-index: 1;
/* Fade in tooltip */
visibility: hidden;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip .ttt-fatigue{
width: 360px;
.ttt-fatigue {
width: 360px;
background: rgba(30, 25, 20, 0.9);
border-image: url(../assets/ui/bg_control.webp) 21 repeat;
border-image-slice: 6 6 6 6 fill;
border-image-width: 6px 6px 6px 6px;
border-image-outset: 0px 0px 0px 0px;
border-radius: 0px;
background: rgba(30, 25, 20, 0.9);
border-image: url(../assets/ui/bg_control.webp) 21 repeat;
border-image-slice: 6 6 6 6 fill;
border-image-width: 6px 6px 6px 6px;
border-image-outset: 0px 0px 0px 0px;
border-radius: 0px;
font-size: 0.8rem;
padding: 3px 0;
}
font-size: 0.8rem;
padding: 3px 0;
}
.tooltip .ttt-ajustements {
width: 150px;
background: var(--background-tooltip);
border-radius: 6px;
font-size: 0.9rem;
padding: 3px 0;
}
.tooltip .ttt-titre {
text-align: justify;
width: 100%;
top: 30px;
background: var(--background-tooltip);
border-radius: 6px;
font-size: 0.9rem;
padding: 3px;
.ttt-ajustements {
width: 10rem;
background: var(--background-tooltip);
border-radius: 6px;
font-size: 0.9rem;
padding: 3px 0;
div:nth-child(odd) {
background: var(--background-tooltip-alt);
}
}
}
aside#tooltip {
max-width: 15rem;
background: var(--background-tooltip);
/*color: var(--color-text-dark-primary);*/
color: rgba(100, 100, 50, 0.85);
font-size: 1rem;
font-size: 0.9rem;
border-radius: 0.2rem;
padding: 0.4rem;
padding: 0.3rem;
font-family: "CaslonAntique";
}
aside#tooltip span.reference {
@@ -1898,19 +1947,6 @@
color: var(--color-tooltip-faint);
}
.tooltip :is(.ttt-xp,.ttt-levelup) {
width: 250px;
background: var(--background-tooltip) !important;
border-radius: 6px;
font-size: 0.9rem;
padding: 3px 0;
}
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
.chat-card-button, .chat-card-button-pushed {
border-radius: 0.2rem;

View File

@@ -1,10 +1,7 @@
.application.sheet.fvtt-rdd {
.sheet-common();
section.window-content{
padding: 0rem;
// Styles pour la feuille d'objet Monnaie
.monnaie-content {
.item-sheet-common();
.item-sheet-header();
section header.sheet-header {
.sheet-header();
}
}
}

7
less/item/munition.less Normal file
View File

@@ -0,0 +1,7 @@
// Styles pour la feuille d'objet Monnaie
.munition-content {
.item-sheet-common();
.item-sheet-header();
}

7
less/item/tarot.less Normal file
View File

@@ -0,0 +1,7 @@
// Styles pour la feuille d'objet Monnaie
.tarot-content {
.item-sheet-common();
.item-sheet-header();
}

View File

@@ -1,21 +1,96 @@
.sheet-common() {
.item-sheet-common() {
padding: 0px;
.window-content{
// Styles pour la section de description, si le partiel utilise une structure standard
.editor,
.editor-content {
height: auto; // Ajuster selon le besoin
min-height: 100px; // Hauteur minimale pour la description
background: var(--rdd-bg-input-alt); // Une couleur de fond alternative
padding: 5px;
border-radius: 3px;
color: var(--rdd-color-text-primary);
}
.window-content {
font-family: CaslonAntique;
text-align: justify;
font-size: 1rem;
letter-spacing: 1px;
padding: 0% 0 0 0;
font-size: calc(var(--font-size-standard) * 1);
color: var(--color-dark-1);
background: var(--background-image-base) no-repeat;
background-size: 100% 100%;
}
fieldset {
background: var(--fieldset-background);
color: var(--rdd-color-text-primary);
margin-bottom: 4px;
border-radius: 6px;
border-color: var(--rdd-color-text-primary);
border-width: 2px;
}
.form-group {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
padding: 2px 0;
border-bottom: 1px solid var(--rdd-color-shadow-primary);
font-size: 0.9rem;
label {
font-weight: normal;
flex: 2;
padding-left: 5px;
margin: 0;
color: var(
--rdd-color-text-primary
); // Assurez-vous que cette variable existe dans colors.less
}
.attribute-value,
input[type="text"],
input[type="number"],
select {
flex: 3;
background: var(--rdd-input-background);
border: 1px solid var(--rdd-color-border-input); // Assurez-vous que cette variable existe
color: var(
--rdd-color-text-input
); // Assurez-vous que cette variable existe
padding: 2px 2px; // Augmentation du padding vertical
border-radius: 3px;
}
input[type="checkbox"] {
flex: 0 0 20px; // Taille fixe pour les cases à cocher
margin-left: 5px;
}
}
}
.sheet-header() {
.item-sheet-header() {
background: #011d33 url(../assets/ui/bg_header.webp) no-repeat left top;
color: rgba(255, 255, 255, 1);
.sheet-header-row {
display: flex;
flex-direction: row;
align-items: center;
h1,
input {
font-family: CaslonAntique;
font-size: 2.5rem;
font-weight: normal;
color: var(--window-header-title-color);
margin: 4px;
height: 3rem;
}
}
:is(
input[type="text"],
@@ -23,10 +98,11 @@
input[type="password"],
input[type="datetime-local"],
input[type="date"],
input[type="time"]) {
color: rgba(255, 255, 255, 0.75);
background: rgba(255, 255, 255, 0.1);
border: 0 none;
margin-bottom: 0.2rem;
input[type="time"]
) {
color: rgba(255, 255, 255, 0.75);
background: rgba(255, 255, 255, 0.1);
border: 0 none;
margin-bottom: 0.2rem;
}
}

View File

@@ -1583,7 +1583,7 @@ export class RdDActor extends RdDBaseActorSang {
return
}
if (rollData.rolled.isEchec ||
(rollData.ajustements.diviseurSignificative && (rollData.rolled.roll * rollData.ajustements.diviseurSignificative > rollData.score))) {
(rollData.diviseurSignificative && (rollData.rolled.roll * rollData.diviseurSignificative > rollData.rolled.score))) {
rollData.perteMoralEchec = rollData.moral <= -3 ? 'dissolution' : 'perte';
rollData.moral = await this.moralIncDec(-1); /* L'appel au moral a échoué. Le personnage perd un point de moral */
}

View File

@@ -341,6 +341,9 @@ export class RdDBaseActorReve extends RdDBaseActor {
const selectedCaracName = ['apparence', 'perception', 'force', 'reve'].find(it => carac[it] != undefined)
await this.openRollDialog({
name: 'jet-quelconque',
label: 'Jet',
template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll.hbs',
rollData: {
alias: this.getAlias(),
carac: carac,

View File

@@ -15,6 +15,7 @@ import { ItemAction } from "../item/item-actions.js";
* @extends {ActorSheet}
*/
export class RdDBaseActorSheet extends foundry.appv1.sheets.ActorSheet {
static _warnedAppV1 = true
/** @override */
static get defaultOptions() {

View File

@@ -213,6 +213,7 @@ export class RdDBaseActor extends Actor {
isCreatureEntite() { return this.isCreature() || this.isEntite() }
isCreature() { return false }
isEntite(typeentite = []) { return false }
isHautRevant() { return false }
isVehicule() { return false }
isPersonnage() { return false }
getItem(id, type = undefined) {

View File

@@ -1,6 +1,4 @@
import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js";
import { RdDItem } from "../item.js";
import { RdDUtility } from "../rdd-utility.js";
import { RdDBaseActorSheet } from "./base-actor-sheet.js";
/**
@@ -44,13 +42,8 @@ export class RdDCommerceSheet extends RdDBaseActorSheet {
activateListeners(html) {
super.activateListeners(html);
this.html.find('a.item-acheter').click(async event => await this.vente(this.getItem(event)));
this.html.find('.service-acheter').click(async event => await this.vente(this.getItem(event)));
if (!this.options.editable) return;
this.html.find('a.item-quantite-moins').click(async event => await this.getItem(event)?.quantiteIncDec(-1, { supprimerSiZero: false }));
this.html.find('a.item-quantite-plus').click(async event => await this.getItem(event)?.quantiteIncDec(1));
this.html.find('input.item-quantite').change(async event => {
const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val()));
await this.getItem(event)?.update({ "system.quantite": newQuantite });
@@ -64,28 +57,4 @@ export class RdDCommerceSheet extends RdDBaseActorSheet {
getTypesInventaire() {
return RdDItem.getItemTypesInventaire('all');
}
async vente(item) {
const acheteur = RdDUtility.getSelectedActor();
if (!acheteur) {
ui.notifications.warn(`Pas d'acheteur sélectionné`);
return;
}
const disponible = this.actor.getQuantiteDisponible(item)
if (disponible == 0) {
ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`);
return;
}
await DialogItemAchat.onAcheter({
item,
vendeur: this.actor,
acheteur,
quantiteIllimite: disponible == undefined,
nbLots: disponible ?? 1,
tailleLot: 1,
prixLot: item.calculerPrixCommercant()
});
}
}

View File

@@ -1,4 +1,6 @@
import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js";
import { Misc } from "../misc.js";
import { RdDUtility } from "../rdd-utility.js";
import { RdDBaseActor } from "./base-actor.js";
export class RdDCommerce extends RdDBaseActor {
@@ -37,4 +39,27 @@ export class RdDCommerce extends RdDBaseActor {
const pourcentage = this.system.pourcentage ?? 100;
return Misc.keepDecimals(Math.ceil(item.system.cout * pourcentage) / 100, 2);
}
async vente(item) {
const acheteur = RdDUtility.getSelectedActor();
if (!acheteur) {
ui.notifications.warn(`Pas d'acheteur sélectionné`);
return;
}
const disponible = this.getQuantiteDisponible(item)
if (disponible == 0) {
ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`);
return;
}
await DialogItemAchat.onAcheter({
item,
vendeur: this,
acheteur,
quantiteIllimite: disponible == undefined,
nbLots: disponible ?? 1,
tailleLot: 1,
prixLot: item.calculerPrixCommercant()
});
}
}

View File

@@ -12,14 +12,18 @@ export class ExportScriptarium {
}
constructor() {
Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
Hooks.on("getActorDirectoryEntryContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
//Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
Hooks.on("getFolderContextOptions", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
//Hooks.on("getActorDirectoryEntryContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
Hooks.on("getActorContextOptions", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
}
onActorDirectoryMenu(actorDirectory, menus) {
// DEBUG console.log("ExportScriptarium.onActorDirectoryMenu", actorDirectory, menus)
menus.push({
name: 'Export Personnages <i class="fa-regular fa-file-csv"></i>',
icon: IMG_SCRIPTARIUM,
name: 'Export Personnages',
icon: '<i class="fa-solid fa-download"></i>', //IMG_SCRIPTARIUM,
condition: (target) => game.user.isGM &&
OptionsAvancees.isUsing(EXPORT_CSV_SCRIPTARIUM) &&
this.$getActors(actorDirectory, target).length > 0,
@@ -28,22 +32,28 @@ export class ExportScriptarium {
}
$getTargetName(actorDirectory, target) {
target = $(target)
const li = target.closest(".directory-item")
const folderId = li.data("folderId")
const actorId = li.data("documentId")
const actorId = li.data("entryId")
return actorId
? game.actors.get(actorId).name
: actorDirectory.folders.find(it => it.id == folderId).name
: actorDirectory.collection.filter(it => it.folder.id == folderId).name
}
$getActors(actorDirectory, target) {
if (actorDirectory.id != "actors") {
return []
}
// DEBUG console.log("ExportScriptarium.$getActors", actorDirectory, target)
target = $(target)
const li = target.closest(".directory-item")
const folderId = li.data("folderId")
const actorId = li.data("documentId")
const actorId = li.data("entryId")
const actors = actorId
? [game.actors.get(actorId)]
: folderId
? actorDirectory.folders.find(it => it.id == folderId).contents
? actorDirectory.collection.filter(it => it.folder.id == folderId)
: []
return actors.filter(it => it.type == ACTOR_TYPES.personnage)
}
@@ -54,7 +64,7 @@ export class ExportScriptarium {
const actorLines = actors.map(actor => Misc.join(this.getActorLine(actor), ';'))
const data = Misc.join([header, ...actorLines], eol)
const filename = `scriptarium-${targetName?.slugify()}.csv`;
saveDataToFile(data, "text/csv;charset=windows-1252", `${filename}`);
foundry.utils.saveDataToFile(data, "text/csv;charset=windows-1252", `${filename}`);
}
getHeaderLine() {

View File

@@ -53,7 +53,7 @@ export default class RdDItemBaseSheet extends HandlebarsApplicationMixin(foundry
static DEFAULT_OPTIONS = {
classes: ["fvtt-rdd", "item"],
position: {
width: 600,
width: 448,
height: "auto",
},
form: {

View File

@@ -13,7 +13,7 @@ export default class RdDMonnaieSheet extends RdDItemBaseSheet {
RdDItemBaseSheet.DEFAULT_OPTIONS,
{
classes: ["fvtt-rdd", "item", "monnaie"],
position: { width: 400 },
position: { width: 448 },
window: { contentClasses: ["monnaie-content"] }
})

View File

@@ -12,7 +12,7 @@ export default class RdDMunitionSheet extends RdDItemBaseSheet {
RdDItemBaseSheet.DEFAULT_OPTIONS,
{
classes: ["fvtt-rdd", "item", "munition"],
position: { width: 400 },
position: { width: 448 },
window: { contentClasses: ["munition-content"] }
})

View File

@@ -12,7 +12,7 @@ export default class RdDTarotSheet extends RdDItemBaseSheet {
RdDItemBaseSheet.DEFAULT_OPTIONS,
{
classes: ["fvtt-rdd", "item", "tarot"],
position: { width: 400 },
position: { width: 448 },
window: { contentClasses: ["tarot-content"] }
})

View File

@@ -1,7 +1,11 @@
import { RdDItem } from "../item.js";
export default class RdDItemMonnaie extends RdDItem {
static get defaultIcon() {
return 'systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp'
constructor(data, context) {
if (!data.img) {
data.img = 'systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp'
}
super(data, context);
}
}

View File

@@ -2,6 +2,6 @@ import { RdDItem } from "../item.js";
export default class RdDItemTarot extends RdDItem {
static get defaultIcon() {
return 'systems/foundryvtt-reve-de-dragon/icons/objets/tarot.webp'
return 'systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp'
}
}

View File

@@ -4,8 +4,7 @@ import { Misc } from "../misc.js"
export const ACTION_ITEM_ENCHANTER = {
code: 'item-enchanter', label: 'Enchanter', icon: it => 'fa-solid fa-sparkles',
filter: it => game.user.isGM || DialogEnchanter.isEnchantable(it),
optionsFilter: options => options.editable,
filter: it => game.user.isGM || DialogEnchanter.isEnchantable(it) && it.parent?.type != ACTOR_TYPES.commerce,
action: (item, actor) => DialogEnchanter.enchanter(item)
}

View File

@@ -78,6 +78,8 @@ export const defaultItemImg = {
souffle: "systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp",
tarot: "systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp",
tete: "systems/foundryvtt-reve-de-dragon/icons/tete_dragon.webp",
monnaie:"systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp",
munition: "systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp"
}
/* -------------------------------------------- */

View File

@@ -1,3 +1,4 @@
import { ACTOR_TYPES } from "../constants.js"
import { Misc } from "../misc.js"
import { RdDSheetUtility } from "../rdd-sheet-utility.js"
import { RdDUtility } from "../rdd-utility.js"
@@ -14,22 +15,21 @@ const _SPACEHOLDER = { placeholder: true }
const _VENDRE = {
code: 'item-vendre', label: 'Vendre ou donner', icon: it => 'fa-solid fa-comments-dollar',
filter: it => Misc.toInt(it.system.quantite) > 0,
optionsFilter: options => options.editable,
action: (item, actor) => item.proposerVente()
}
const _ACHAT_SERVICE = {
code: 'item-service-acheter', label: 'Acheter', icon: it => 'fa-regular fa-coins',
//filter: it => Misc.toInt(it.system.quantite) > 0,
//optionsFilter: options => options.editable,
//action: (item, actor) => item.proposerVente()
const _ACHETER = {
code: 'item-acheter', label: 'Acheter', icon: it => 'fa-regular fa-coins',
filter: it => Misc.toInt(it.system.quantite) > 0 && it.parent?.type == ACTOR_TYPES.commerce,
action: (item, actor) => actor.vente(item)
}
const _MONTRER = {
code: 'item-montrer', label: 'Montrer', icon: it => 'fa-solid fa-comment',
allowLimited: true,
action: (item, actor) => item.postItemToChat()
}
const _SPLIT = {
code: 'item-split', label: 'Séparer le goupe', icon: it => 'fa-solid fa-unlink',
filter: it => Misc.toInt(it.system.quantite) > 1,
filter: it => Misc.toInt(it.system.quantite) > 1 && it.parent?.type != ACTOR_TYPES.commerce,
action: (item, actor) => RdDSheetUtility.splitItem(item, actor)
}
@@ -39,7 +39,7 @@ const _EDIT = {
}
const _DELETE = {
code: 'item-delete', label: 'Supprimer', icon: it => 'fa-solid fa-trash',
optionsFilter: options => options.editable && options.isOwner,
optionsFilter: options => options.isOwner,
action: (item, actor) => RdDUtility.confirmActorItemDelete(item, actor)
}
const _EQUIPER = {
@@ -51,30 +51,25 @@ const _EQUIPER = {
const _CUISINER = {
code: 'item-cuisiner', label: 'Cuisiner', icon: it => 'fa-solid fa-utensils',
filter: it => it.getUtilisation() == 'cuisine' && it.system.sust > 0,
optionsFilter: options => options.editable,
action: (item, actor) => actor.preparerNourriture(item)
}
const _MANGER_CRU = {
code: 'item-manger-cru', label: 'Manger cru', icon: it => 'fa-solid fa-drumstick-bite',
filter: it => it.getUtilisation() == 'cuisine' && it.system.sust > 0,
optionsFilter: options => options.editable,
action: (item, actor) => actor.mangerNourriture(item)
}
const _MANGER = {
code: 'item-manger', label: 'Manger', icon: it => 'fa-solid fa-utensils',
filter: it => !(it.system.boisson),
optionsFilter: options => options.editable,
action: (item, actor) => actor.mangerNourriture(item)
}
const _BOIRE = {
code: 'item-boire', label: 'Boire', icon: it => 'fa-solid fa-glass-water',
filter: it => it.system.boisson,
optionsFilter: options => options.editable,
action: (item, actor) => actor.mangerNourriture(item)
}
const _DECOCTION = {
code: 'item-decoction', label: 'Décoction', icon: it => 'fa-solid fa-flask-vial',
optionsFilter: options => options.editable,
action: (item, actor) => actor.fabriquerDecoctionHerbe(item)
}
const _OUVRIR = {
@@ -84,14 +79,12 @@ const _OUVRIR = {
const _LIRE = {
code: 'item-lire', label: 'Lire', icon: it => 'fa-solid fa-book-open',
optionsFilter: options => options.editable,
action: (item, actor) => actor.actionLire(item)
}
const _REFOULER = {
code: 'item-refouler', label: 'Refouler', icon: it => 'fa-solid fa-burst',
filter: it => it.system.refoulement > 0,
optionsFilter: options => options.editable,
action: (item, actor) => actor.actionRefoulement(item)
}
@@ -102,7 +95,7 @@ const _SORT_RESERVE = {
}
export const COMMON_ACTIONS = [_EQUIPER]
export const DEFAULT_ACTIONS = [_SPACEHOLDER, _SPLIT, _VENDRE, _MONTRER, _EDIT, _DELETE]
export const DEFAULT_ACTIONS = [_ACHETER, _SPACEHOLDER, _SPLIT, _VENDRE, _MONTRER, _EDIT, _DELETE]
export const ITEM_ACTIONS = {
faune: [_CUISINER, _MANGER_CRU],
@@ -114,17 +107,16 @@ export const ITEM_ACTIONS = {
ombre: [_REFOULER],
plante: [_CUISINER, _MANGER_CRU],
queue: [_REFOULER],
sort: [_SORT_RESERVE],
service: [_ACHAT_SERVICE]
sort: [_SORT_RESERVE]
}
export class ItemAction {
static applies(action, item, options) {
return action && item
&& item.isActionAllowed(action.code)
&& (!action.filter || action.filter(item))
&& (action.allowLimited || options.editable)
&& (!action.optionsFilter || action.optionsFilter(options))
}
@@ -136,10 +128,10 @@ export class ItemAction {
}
static async onActionItem(event, actor, options) {
const item = RdDSheetUtility.getItem(event, actor)
const code = $(event.currentTarget).data('code')
const item = RdDSheetUtility.getItem(event, actor)
const action = item?.itemActions().find(it => it.code == code)
if (action && (!action.optionsFilter || action.optionsFilter(options))) {
if (action && ItemAction.applies(action, item, options)) {
await action.action(item, actor)
}
}

View File

@@ -8,6 +8,7 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js";
import { RdDRaretes } from "./item/raretes.js";
import { VOIES_DRACONIC } from "./item-sort.js";
import { SystemCompendiums } from "./settings/system-compendiums.js";
import { Misc } from "./misc.js";
class Migration {
get code() { return "sample"; }
@@ -631,13 +632,37 @@ class _12_0_38_TachesEcriture extends Migration {
async migrate() {
await this.applyItemsUpdates(items => items
.filter(it => [ITEM_TYPES.tache, ITEM_TYPES.livre, ITEM_TYPES.oeuvre, ITEM_TYPES.meditation].includes(it.type) )
.filter(it => it.system.competence == 'Ecriture')
.filter(it => [ITEM_TYPES.tache, ITEM_TYPES.livre, ITEM_TYPES.oeuvre, ITEM_TYPES.meditation].includes(it.type))
.filter(it => Grammar.equalsInsensitive(it.system.competence, 'ecriture'))
.map(it => { return { _id: it.id, 'system.competence': 'Écriture' } })
)
}
}
class _13_0_4_FixReveActuel extends Migration {
get code() { return "fix-reve-actuel" }
get version() { return "13.0.4" }
async migrate() {
game.actors.forEach(it => it.update({ 'system.carac.-=reve-actuel': null }))
}
}
class _13_0_7_FixNiveauOeuvres extends Migration {
get code() { return "fix-niveau-oeuvres" }
get version() { return "13.0.7" }
async migrate() {
await this.applyItemsUpdates(items => items
.filter(it => [ITEM_TYPES.musique, ITEM_TYPES.chant, ITEM_TYPES.danse, ITEM_TYPES.recettecuisine].includes(it.type))
.map(it => {
const niveau = isNaN(it.system.niveau) ? 0 : parseInt(it.system.niveau)
return { _id: it.id, 'system.niveau': niveau }
})
)
}
}
export class Migrations {
static getMigrations() {
return [
@@ -660,7 +685,9 @@ export class Migrations {
new _12_0_26_MigrationVoieSorts(),
new _12_0_32_MigrationRaces(),
new _12_0_37_MigrationAlchimieEtat(),
new _12_0_38_TachesEcriture()
new _12_0_38_TachesEcriture(),
new _13_0_4_FixReveActuel(),
new _13_0_7_FixNiveauOeuvres(),
];
}

View File

@@ -17,23 +17,23 @@ import { RdDRollResult } from "./rdd-roll-result.js";
/* -------------------------------------------- */
const premierRoundInit = [
{ pattern: 'hast', init: 5.90 },
{ pattern: 'lance', init: 5.85 },
{ pattern: 'baton', init: 5.80 },
{ pattern: 'doubledragonne', init: 5.75 },
{ pattern: 'esparlongue', init: 5.70 },
{ pattern: 'epeedragonne', init: 5.65 },
{ pattern: 'epeebatarde', init: 5.60 },
{ pattern: 'epeecyane', init: 5.55 },
{ pattern: 'epeesorde', init: 5.50 },
{ pattern: 'grandehache', init: 5.45 },
{ pattern: 'bataille', init: 5.40 },
{ pattern: 'epeegnome', init: 5.35 },
{ pattern: 'masse', init: 5.30 },
{ pattern: 'gourdin', init: 5.25 },
{ pattern: 'fleau', init: 5.20 },
{ pattern: 'dague', init: 5.15 },
{ pattern: 'autre', init: 5.10 },
{ pattern: 'hast' },
{ pattern: 'lance' },
{ pattern: 'baton' },
{ pattern: 'doubledragonne' },
{ pattern: 'esparlongue' },
{ pattern: 'epeedragonne' },
{ pattern: 'epeebatarde' },
{ pattern: 'epeecyane' },
{ pattern: 'epeesorde' },
{ pattern: 'grandehache' },
{ pattern: 'bataille' },
{ pattern: 'epeegnome' },
{ pattern: 'masse' },
{ pattern: 'gourdin' },
{ pattern: 'fleau' },
{ pattern: 'dague' },
{ pattern: 'autre' },
];
/* -------------------------------------------- */
@@ -45,6 +45,10 @@ export class RdDCombatManager extends Combat {
Hooks.on("updateCombat", (combat, change, options, userId) => { RdDCombat.onUpdateCombat(combat, change, options, userId) });
Hooks.on("preDeleteCombat", (combat, html, id) => { combat.onPreDeleteCombat() })
Hooks.on("deleteCombat", (combat, html, id) => { combat.onDeleteCombat() })
for (let i = 0.0; i < premierRoundInit.length; i++) {
premierRoundInit[i].init = 5.99 - i / 100
}
}
/* -------------------------------------------- */
@@ -108,9 +112,7 @@ export class RdDCombatManager extends Combat {
async rollInitiative(ids, messageOptions = {}) {
console.log(`${game.system.title} | Combat.rollInitiative()`, ids, messageOptions)
ids = typeof ids === "string" ? [ids] : ids
ids.forEach(async id =>
await this.rollInitRdD(id, undefined, messageOptions)
)
Promise.all(ids.map(id => this.rollInitRdD(id, undefined, messageOptions)))
return this
}
@@ -251,19 +253,20 @@ export class RdDCombatManager extends Combat {
let initMissing = game.combat.combatants.find(it => !it.initiative);
if (!initMissing) { // Premier round !
for (let combatant of game.combat.combatants) {
let action = combatant.initiativeData?.arme;
//console.log("Parsed !!!", combatant, initDone, game.combat.current, arme);
if (action && action.type == "arme") {
for (let initData of premierRoundInit) {
if (Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround).includes(initData.pattern)) {
let msg = `<h4>L'initiative de ${combatant.actor.getAlias()} a été modifiée !</h4>
if (combatant.initiativeData?.arme?.type == "arme") {
// TODO: get init data premier round
const initiativeData = combatant.initiativeData;
const action = combatant.initiativeData.arme;
const fromArme = Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround)
const initData = premierRoundInit.find(it => fromArme.includes(initData.pattern))
if (initData) {
let msg = `<h4>L'initiative de ${combatant.actor.getAlias()} a été modifiée !</h4>
<hr>
<div>
Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
</div>`
ChatMessage.create({ content: msg });
game.combat.setInitiative(combatant._id, initData.init);
}
ChatMessage.create({ content: msg });
game.combat.setInitiative(combatant._id, initData.init);
}
}
}
@@ -297,7 +300,7 @@ export class RdDCombatManager extends Combat {
].concat(options);
}
/* -------------------------------------------- */
static rollInitiativeAction(combatantId, action) {
static async rollInitiativeAction(combatantId, action) {
const combatant = game.combat.combatants.get(combatantId)
const actor = RdDCombatManager.getActorCombatant(combatant)
if (actor == undefined) { return [] }
@@ -308,7 +311,8 @@ export class RdDCombatManager extends Combat {
const ajustement = RdDCombatManager.calculAjustementInit(actor, action)
const rollFormula = RdDCombatManager.formuleInitiative(init.offset, init.carac, init.niveau, ajustement);
game.combat.rollInitRdD(combatantId, rollFormula, init);
await game.combat.rollInitRdD(combatantId, rollFormula, init);
combatant.initiativeData
}
static getInitData(actor, action) {
@@ -1141,7 +1145,7 @@ export class RdDCombat {
if (RdDCombat.isParticuliere(defenderRoll)) {
await this._onEsquiveParticuliere(defenderRoll)
}
return
return
}
return await this._onEsquiveEchec(defenderRoll)
}

View File

@@ -40,7 +40,7 @@ export class RdDRoll extends Dialog {
etat: actor.getEtatGeneral(),
moral: actor.getMoralTotal(), /* La valeur du moral pour les jets de volonté */
amoureux: actor.listeSuivants(it => it.coeur > 0),
carac: actor.system.carac,
carac: foundry.utils.duplicate(actor.system.carac),
finalLevel: 0,
diffConditions: 0,
diffLibre: rollData.competence?.system.default_diffLibre ?? 0,

View File

@@ -1,7 +1,7 @@
import { SHOW_DICE, SYSTEM_RDD } from "./constants.js";
import { RollDataAjustements } from "./rolldata-ajustements.js";
import { RdDUtility } from "./rdd-utility.js";
import { TMRUtility } from "./tmr-utility.js";
import { COORD_TMR_INCONNU, TMRUtility } from "./tmr-utility.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { RdDTMRRencontreDialog } from "./rdd-tmr-rencontre-dialog.js";
import { ChatUtility } from "./chat-utility.js";
@@ -996,6 +996,10 @@ export class RdDTMRDialog extends Dialog {
const targetOddq = this.pixiTMR.computeEventOddq(event)
const targetCoord = TMRUtility.oddqToCoordTMR(targetOddq)
if (targetCoord == COORD_TMR_INCONNU){
ui.notifications.error("Vous ne pouvez pas vous déplacer ici");
return
}
// Validation de la case de destination (gestion du cas des rencontres qui peuvent téléporter)
const typeDeplacement = this._calculDeplacement(targetCoord, currentCoord, currentOddq, targetOddq);

View File

@@ -1,6 +1,5 @@
/* -------------------------------------------- */
import { HtmlUtility } from "./html-utility.js";
import { Misc } from "./misc.js";
import { RdDCombatManager } from "./rdd-combat.js";
import { Targets } from "./targets.js";
@@ -89,7 +88,7 @@ export class RdDTokenHud {
if (target?.actor) {
const hudSoins = { blessures: target.actor.blessuresASoigner() ?? [] };
if (hudSoins.blessures.length > 0) {
const controlIconTarget = html.find('.control-icon[data-action=combat]');
const controlIconTarget = $(html).find('.control-icon[data-action=combat]');
await RdDTokenHud._configureSubMenu(controlIconTarget,
'systems/foundryvtt-reve-de-dragon/templates/hud-actor-soins.hbs',
hudSoins,
@@ -112,6 +111,7 @@ export class RdDTokenHud {
/* -------------------------------------------- */
static async addTokenHudExtensions(app, html, tokenId) {
console.log(`Adding token HUD extensions for token ${tokenId}`);
const controlIconCombat = $(html).find('.control-icon[data-action=combat]');
if (controlIconCombat.length > 0) {
controlIconCombat.click(event => {
@@ -129,7 +129,7 @@ export class RdDTokenHud {
/* -------------------------------------------- */
static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
const hud = $(await renderTemplate(template, hudData));
const hud = $(await foundry.applications.handlebars.renderTemplate(template, hudData));
const list = hud.find('div.rdd-hud-list');
RdDTokenHud._toggleHudListActive(hud, list);

View File

@@ -4,7 +4,7 @@ import { Misc } from "../misc.js"
export const EXPORT_CSV_SCRIPTARIUM = 'export-csv-scriptarium'
const OPTIONS_AVANCEES = [
{ group: 'Menus', name: EXPORT_CSV_SCRIPTARIUM, descr: "Proposer le menu d'export csv Scriptarium" },
{ group: 'Menus', name: EXPORT_CSV_SCRIPTARIUM, descr: "Proposer le menu d'export csv Scriptarium", default: false },
]
export class OptionsAvancees extends FormApplication {
@@ -24,10 +24,6 @@ export class OptionsAvancees extends FormApplication {
})
}
constructor(...args) {
super(...args)
}
static _getId(name) {
return `rdd-advanced-${name}`
}

View File

@@ -15,6 +15,8 @@ const TEMPLATE_CALENDRIER = "systems/foundryvtt-reve-de-dragon/templates/time/ca
const INITIAL_CALENDAR_POS = { top: 200, left: 200, horlogeAnalogique: true };
/* -------------------------------------------- */
export class RdDCalendrier extends Application {
static _warnedAppV1 = true
static initSettings() {
game.settings.register(SYSTEM_RDD, "liste-nombre-astral", {
name: "liste-nombre-astral",
@@ -242,7 +244,7 @@ export class RdDCalendrier extends Application {
}
/**
*
*
* @param {*} indexDate la date pour laquelle obtenir le nombre astral. Si undefined, on prend la date du jour
* @returns le nombre astral pour la date, ou pour la date du jour si la date n'est pas fournie.
* Si aucun nombre astral n'est trouvé, retourne 0 (cas où l'on demanderait un nombre astral en dehors des 12 jours courant et à venir)

View File

@@ -2,6 +2,9 @@ import { Misc } from "./misc.js";
import { Grammar } from "./grammar.js";
import { RdDDice } from "./rdd-dice.js";
const TMR_INCONNU = "inconnu"
export const COORD_TMR_INCONNU = "A0"
export const TMRType = {
cite: { type: 'cite', name: "cité", genre: "f" },
sanctuaire: { type: 'sanctuaire', name: "sanctuaire", genre: 'm' },
@@ -16,13 +19,15 @@ export const TMRType = {
marais: { type: 'marais', name: "marais", genre: "m" },
gouffre: { type: 'gouffre', name: "gouffre", genre: "m" },
necropole: { type: 'necropole', name: "nécropole", genre: "f" },
desolation: { type: 'desolation', name: "désolation", genre: "f" }
desolation: { type: 'desolation', name: "désolation", genre: "f" },
[TMR_INCONNU]: { type: TMR_INCONNU, name: TMR_INCONNU, genre: "m" }
}
export const FLEUVE_COORD = 'Fleuve'
const TMRMapping = {
Fleuve: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli", generique: 'fleuve' },
[COORD_TMR_INCONNU]: { type: TMR_INCONNU, label: TMR_INCONNU },
A1: { type: TMRType.cite.type, label: "Cité Vide" },
B1: { type: TMRType.plaines.type, label: "Plaines dAssorh" },
C1: { type: TMRType.necropole.type, label: "Nécropole de Kroak" },
@@ -272,7 +277,7 @@ export class TMRUtility {
}
static getTMRType(coord) {
const tmr = TMRUtility.getTMR(coord);
const tmr = TMRUtility.getTMR(coord)
return Misc.upperFirst(TMRType[tmr.type].name);
}

View File

@@ -13,7 +13,7 @@ export class Conquete extends Draconique {
async onActorCreateOwned(actor, item) { await this._creerConquete(actor, item); }
code() { return 'conquete' }
tooltip(linkData) { return `Doit être conquis` }
tooltip(linkData) { return 'Doit être conquis' }
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/conquete.svg' }
createSprite(pixiTMR) {

View File

@@ -1,5 +1,5 @@
import { ITEM_TYPES } from "../constants.js";
import { TMRUtility } from "../tmr-utility.js";
import { COORD_TMR_INCONNU, TMRUtility } from "../tmr-utility.js";
import { PixiTMR } from "./pixi-tmr.js";
const registeredEffects = [
@@ -12,7 +12,7 @@ export class Draconique {
static init() {
}
static isCaseTMR(item) { return item.type == ITEM_TYPES.casetmr; }
static isCaseTMR(item) { return item.type == ITEM_TYPES.casetmr }
static isQueueDragon(item) { return item.isQueueDragon(); }
static isSouffleDragon(item) { return item.type == ITEM_TYPES.souffle; }
static isTeteDragon(item) { return item.type == ITEM_TYPES.tete; }
@@ -92,7 +92,7 @@ export class Draconique {
const tooltip = this.tooltip(linkData);
return this._createToken(pixiTMR, linkData, coordTMR, type, tooltip);
}
tokens(pixiTMR, linkData, coordTMR, type = undefined) {
const tooltip = this.tooltip(linkData);
return [this._createToken(pixiTMR, linkData, coordTMR, type, tooltip)];
@@ -127,7 +127,7 @@ export class Draconique {
* @param {*} coord les coordonnées d'une case. Si undefined toute case du type correspondra,
*/
isCase(item, coord = undefined) {
return Draconique.isCaseTMR(item) && item.system.specific == this.code() && (coord ? item.system.coord == coord : true);
return Draconique.isCaseTMR(item) && item.system.specific == this.code() && (coord ? (coord != COORD_TMR_INCONNU && item.system.coord == coord) : true);
}
find(list, coord = undefined) {
@@ -150,7 +150,7 @@ export class Draconique {
}
isCaseForSource(item, draconique) {
return Draconique.isCaseTMR(item) && item.system.specific == this.code() && item.system.sourceid == draconique.id;
return Draconique.isCaseTMR(item) && item.system.specific == this.code() && item.system.sourceid == draconique.id
}
async onVisiteSupprimer(actor, tmr, onRemoveToken) {

View File

@@ -1,6 +1,6 @@
import { Grammar } from "../grammar.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { TMRUtility } from "../tmr-utility.js";
import { COORD_TMR_INCONNU, TMRUtility } from "../tmr-utility.js";
import { Draconique } from "./draconique.js";
export class QueteEaux extends Draconique {
@@ -9,11 +9,13 @@ export class QueteEaux extends Draconique {
match(item) { return Draconique.isTeteDragon(item) && Grammar.toLowerCaseNoAccent(item.name).includes("quete des eaux"); }
manualMessage() { return "Vous devrez re-configurer votre Nouvelle Quête des Eaux une fois un lac ou marais vaincu" }
async onActorCreateOwned(actor, tete) {
await this.createCaseTmr(actor, "Nouvelle Quête des Eaux", { coord: 'A0' }, tete.id);
await this.createCaseTmr(actor, "Nouvelle Quête des Eaux", { coord: COORD_TMR_INCONNU }, tete.id);
}
code() { return 'maitrisee' }
tooltip(linkData) { return `Quête des eaux, ${TMRUtility.getTMRType(linkData.system.coord)} maîtrisé` }
tooltip(linkData) {
return linkData.system.coord == COORD_TMR_INCONNU ? 'Nouvelle Quête des eaux en cours' : `Quête des eaux, ${TMRUtility.getTMRType(linkData.system.coord)} maîtrisé`
}
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/maitrisee.svg' }
createSprite(pixiTMR) {

View File

@@ -1,5 +1,6 @@
import { Grammar } from "../grammar.js";
import { tmrTokenZIndex } from "../tmr-constants.js";
import { COORD_TMR_INCONNU } from "../tmr-utility.js";
import { Draconique } from "./draconique.js";
export class TerreAttache extends Draconique {
@@ -9,7 +10,7 @@ export class TerreAttache extends Draconique {
manualMessage() { return "Vous pouvez re-configurer votre Nouvelle Terre d'attache" }
async onActorCreateOwned(actor, tete) {
await this.createCaseTmr(actor, "Nouvelle Terre d'attache", { coord: 'A0' }, tete.id);
await this.createCaseTmr(actor, "Nouvelle Terre d'attache", { coord: COORD_TMR_INCONNU }, tete.id);
}
code() { return 'attache' }

View File

@@ -3,8 +3,8 @@ type: faune
img: systems/foundryvtt-reve-de-dragon/icons/faune/ours.webp
system:
description: >-
<p>Ours. For&ecirc;t, montagne, 300 kg, 600 sust.Surtout recherch&eacute;
pour sa peau (voir legrizzal, p405).</p>
<p>Ours. For&ecirc;t, montagne, 300 kg, 600 sust. Surtout recherch&eacute;
pour sa peau (voir le grizzal, p405).</p>
descriptionmj: ''
encombrement: 150
quantite: 1

View File

@@ -811,7 +811,7 @@
},
"musique": {
"templates": ["description"],
"niveau": "",
"niveau": 0,
"reference": ""
},
"danse": {
@@ -819,12 +819,12 @@
"type": "",
"agilite": false,
"apparence": false,
"niveau": "",
"niveau": 0,
"reference": ""
},
"chant": {
"templates": ["description"],
"niveau": "",
"niveau": 0,
"reference": ""
},
"jeu": {
@@ -836,7 +836,7 @@
},
"recettecuisine": {
"templates": ["description"],
"niveau": "",
"niveau": 0,
"ingredients": "",
"duree": "",
"sust": 0,

View File

@@ -13,22 +13,22 @@
<label class="carac-xp"/>
{{else}}
{{#if carac.isLevelUp}}
<span class="carac-label tooltip" name="system.carac.{{key}}.label">
<span class="tooltiptext ttt-levelup">
Vous pouvez dépenser {{carac.xpNext}} points d'Experience pour augmenter de 1 votre caractéristique {{carac.label}}
</span>
<span class="carac-label" name="system.carac.{{key}}.label">
<a name={{key}}>{{carac.label}}</a>
<a class="carac-xp-augmenter" name="augmenter.{{key}}" data-tooltip="Augmenter la caractéristique avec l'expérience">
<a class="carac-xp-augmenter" name="augmenter.{{key}}"
data-tooltip="Vous pouvez dépenser {{carac.xpNext}} points d'Experience pour augmenter votre caractéristique {{carac.label}}">
<i class="fas fa-arrow-alt-circle-up"></i>
</a>
</span>
{{else}}
<span class="carac-label tooltip" name="system.carac.{{key}}.label"><a class="roll-carac" data-carac-name={{key}}>{{carac.label}}</a></span>
<span class="carac-label" name="system.carac.{{key}}.label"><a class="roll-carac" data-carac-name={{key}}>{{carac.label}}</a></span>
{{/if}}
<input class="carac-value" type="number" name="system.carac.{{key}}.value" value="{{carac.value}}" data-dtype="number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
<span class="carac-xp tooltip">
<input class="carac-xp" type="number" name="system.carac.{{key}}.xp" value="{{carac.xp}}" data-dtype="number" {{#unless @root.options.vueDetaillee}}disabled{{/unless}} />
<span class="tooltiptext ttt-xp">Vous devez acquérir {{carac.xpNext}} points d'Experience pour augmenter de 1 votre {{carac.label}}</span>
<span class="carac-xp">
<input class="carac-xp" type="number" name="system.carac.{{key}}.xp" value="{{carac.xp}}" data-dtype="number"
data-tooltip="Vous devez acquérir {{carac.xpNext}} points d'Experience pour augmenter votre {{carac.label}}"
{{#unless @root.options.vueDetaillee}}disabled{{/unless}}
/>
</span>
{{/if}}
{{/if}}

View File

@@ -1,7 +1,7 @@
{{#unless item.system.isHidden}}
{{#if (ne item.type 'monnaie')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true">
<span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} ">
<span class="equipement-nom{{#if (eq item.type 'conteneur')}} conteneur-name{{/if}} ">
<a{{#if (and (ne item.type 'conteneur') options.isObserver)}} class="item-edit"{{/if}} >
{{#if (eq item.type 'conteneur')}}
<i class="{{~#if vide}}far fa-square

View File

@@ -16,13 +16,13 @@
{{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} />
{{#if @root.options.vueDetaillee}}
<span class="competence-xp {{#unless system.isLevelUp}}tooltip{{/unless}}">
<span class="competence-xp">
<input class="competence-xp " type="text" compname="{{name}}" name="comp-xp-{{name}}"
value="{{numberFormat system.xp decimals=0 sign=false}}" data-dtype="number"
{{#unless system.isLevelUp}}
data-tooltip="Vous devez acquérir {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}"
{{/unless}}
{{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} />
{{#unless system.isLevelUp}}
<span class="tooltiptext left-competence ttt-xp">Vous devez acquérir {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}</span>
{{/unless}}
</span>
{{/if}}
{{#if (eq system.categorie 'draconic')}}

View File

@@ -7,7 +7,7 @@
<div>
<h1 class="charname">{{name}}</h1>
</div>
<div>
<div class="flexrow">
<a class="button-appel-chance"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/assets/ui/appel-chance.svg" data-tooltip="Appel à la chance"/></a>
<a class="button-encaissement"><img class="button-img" src="icons/svg/bones.svg" data-tooltip="Encaisser des dommages"/></a>
<a class="button-ethylisme"><img class="button-img" src="icons/svg/tankard.svg" data-tooltip="Boire"/></a>

View File

@@ -1,7 +1,7 @@
{{#unless item.system.isHidden}}
{{#if (or options.isObserver (ne item.type 'monnaie'))}}
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true" data-tooltip="{{#if (gt item.system.quantite 1)}}{{item.system.quantite}} {{/if}}{{item.name}}">
<span class="equipement-nom flexrow {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} ">
<span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} ">
{{#if (eq item.type 'conteneur')}}
<a>
<i class="{{~#if vide}}far fa-square

View File

@@ -1,5 +1,5 @@
<img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
<h4>{{#if isVente}}Achat{{else}}Don{{/if}}</h4>
<h4><img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{#if isVente}}Achat{{else}}Don{{/if}}</h4>
<p>
{{#if acheteur}}{{acheteur.name}}{{else}}L'acheteur{{/if}} a
{{#if isVente}}acheté{{else}}pris{{/if}}

View File

@@ -1,8 +1,10 @@
<img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
<h4>{{actor.name}} a gagné de l'expérience</h4>
<h4><img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
{{actor.name}} a gagné de l'expérience
</h4>
{{#each xpData as |it|}}
{{#if (gt it.xpCarac 0)}}
<hr>
<hr>
<p>
{{it.xpCarac}} point{{#if (gt it.xpCarac 1)}}s{{/if}}
{{#if it.caracRepartitionManuelle}}à répartir manuellement dans la caractéristique dérivée{{else}}en{{/if}}
{{it.caracName}}.
@@ -10,9 +12,11 @@
L'expérience dans cette caractéristique est de {{it.checkCarac.xp}}, elle peut progresser!
<br>Vous devez ouvrir votre fiche de personnage et appliquer l'augmentation manuellement.
{{/if}}
</p>
{{/if}}
{{#if (gt it.xpCompetence 0)}}
<hr>
<hr>
<p>
{{it.xpCompetence}} point{{#if (gt it.xpCompetence 1)}}s{{/if}} en {{it.competence.name}}.
{{#if it.checkComp}}
L'expérience dans cette compétence est de {{it.checkComp.xp}}, elle peut progresser jusqu'à {{it.checkComp.niveau}}!
@@ -25,5 +29,6 @@
{{/if}}
{{/if}}
{{/if}}
</p>
{{/if}}
{{/each}}

View File

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

View File

@@ -1,13 +1,14 @@
<img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
<h4>Résumé de santé pour {{alias}}</h4>
<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>
<h4><img class="chat-icon" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
Résumé de santé pour {{alias}}
</h4>
<p data-combatid="{{combatId}}" data-combatmessage="actor-turn-summary">{{blessuresStatus}}</p>
<p>Son état général est de : {{etatGeneral}} {{#if isSonne}} et est <strong>sonné</strong>{{/if}}</p>
{{#if isGrave}}
<div>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.</div>
<p>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes. Un point d'Endurance a été retiré automatiquement.</p>
{{/if}}
{{#if isCritique}}
<div>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un
<p>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un
<a class="chat-card-button chat-jet-vie"
data-tokenId="{{tokenId}}"
data-actorId="{{actorId}}">Jet de Vie.<a></div>
data-actorId="{{actorId}}">Jet de Vie.<a></p>
{{/if}}

View File

@@ -1,14 +1,15 @@
<img class="chat-icon" src="{{rencontre.img}}" data-tooltip="{{rencontre.name}}" />
<h4>{{#if mauvaise}}Mauvaise rencontre{{else}}Rencontre{{/if}} en {{typeTmr-name tmr.type}}</h4>
<div>{{row.document.pack}}</div>
<div>Jet: {{row.roll.formula}} : {{row.roll.total}}{{percentages}}</div>
<h4><img class="chat-icon" src="{{rencontre.img}}" data-tooltip="{{rencontre.name}}" />
{{#if mauvaise}}Mauvaise rencontre{{else}}Rencontre{{/if}} en {{typeTmr-name tmr.type}}
</h4>
<p>{{row.document.pack}}</p>
<p>Jet: {{row.roll.formula}} : {{row.roll.total}}{{percentages}}</p>
<hr>
<div>
<p>
<p>{{rencontre.name}} de force {{rencontre.system.force}} ({{rencontre.system.formule}})</p>
<p>{{linkCompendium row.document.pack row.document.id row.document.name}}</p>
{{#if rencontre.system.description}}
<div class="poesie-extrait">
<p class="poesie-extrait">
{{{rencontre.system.description}}}
</div>
</p>
{{/if}}
</div>
</p>

View File

@@ -1,21 +1,21 @@
<h4>Tirage aléatoire: {{document.name}}</h4>
<div>
<p>
Tirage de {{typeName}} aléatoire
{{#if options.showSource}} depuis {{document.pack}}{{/if}}
</div>
<div>Jet {{roll.formula}} : {{roll.total}}</div>
</p>
<p>Jet {{roll.formula}} : {{roll.total}}</p>
<hr>
<div>
<p>
<img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" />
<p>{{linkCompendium document.pack document.id document.name}}</p>
{{#if document.system.formule}}
<div class="poesie-extrait">
<p class="poesie-extrait">
@roll[{{document.system.formule}}]
</div>
</p>
{{/if}}
{{#if document.system.description}}
<div class="poesie-extrait">
<p class="poesie-extrait">
{{{document.system.description}}}
</div>
</p>
{{/if}}
</div>
</p>

View File

@@ -1,13 +1,12 @@
<div>
<img class="chat-icon" src="{{img}}" data-tooltip="{{typeName}}" />
<h4>Table aléatoire: {{typeName}}</h4>
{{#with (lookup table 0) as |row|}}
<div>
{{row.document.pack}}
</div>
{{/with}}
<br>
</div>
<h4><img class="chat-icon" src="{{img}}" data-tooltip="{{typeName}}" />
Table aléatoire: {{typeName}}
</h4>
{{#with (lookup table 0) as |row|}}
<p>
{{row.document.pack}}
</p>
{{/with}}
<br>
<div>
<ul class="flexcol item-list alterne-list">
{{#each table as |row|}}

View File

@@ -1,9 +1,9 @@
<img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" />
<h4>
<img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" />
{{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée{{/if}}</strong>
</h4>
<hr>
<div>
<p>
{{#if system.magique}}
Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}.
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
@@ -15,4 +15,4 @@
{{/if}}
{{/if}}.
<br>La potion a été supprimée de l'équipement.
</div>
</p>

View File

@@ -1,9 +1,8 @@
<img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" />
<h4>
<h4><img class="chat-icon" src="{{img}}" data-tooltip="potion de repos" />
{{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée de puissance {{system.puissance}}{{/if}}</strong>.
</h4>
<hr>
<div>
<p>
{{#if system.magique}}
Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}.
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
@@ -24,4 +23,4 @@
Une fois consommée (vers fin Lyre), elle vous octroie un bonus de {{system.herbebonus}} segments de fatigue récupérés en plus à la fin de Chateau Dormant (à gérer manuellement).
{{/if}}
<br>La potion a été supprimée de l'équipement.
</div>
</p>

View File

@@ -1,9 +1,8 @@
<img class="chat-icon" src="{{img}}" data-tooltip="potion de soin" />
<h4>
<h4><img class="chat-icon" src="{{img}}" data-tooltip="potion de soin" />
{{alias}} a bu une <strong>{{name}}{{#if system.magique}} enchantée de {{system.puissance}} points de guérison{{/if}}</strong>
</h4>
<hr>
<div>
<p>
{{#if system.magique}}
Le Jet de Résistance est {{#if rolled.isSuccess}}réussi{{else}}échoué{{/if}}.
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
@@ -22,4 +21,4 @@
Lors de votre prochain jet de récupération à Chateau Dormant, vous bénéficierez d'un bonus de {{system.herbebonus}} (appliqué automatiquement).
{{/if}}
<br>La potion a été supprimée de l'équipement.
</div>
</p>

View File

@@ -1,5 +1,4 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{attacker.name}} a entraîné {{defender.name}} au sol
</h4>
<hr>

View File

@@ -1,9 +1,8 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{attacker.name}} a empoigné {{defender.name}}
</h4>
<hr>
<div>
<p>
<span class='chat-card-button-area'>
{{attacker.name}} vient d'obtenir 2 points d'Emp, et peut
entraîner {{defender.name}} au sol. Les deux protagonistes
@@ -13,4 +12,4 @@
Entraîner au sol
</a>
</span>
</div>
</p>

View File

@@ -1,13 +1,10 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{attacker.name}} a empoigné {{defender.name}}
</h4>
<hr>
<div>
<p>
<span class='chat-card-button-area'>
<p>
{{attacker.name}} a obtenu 2 points d'Emp à la fin du round précédent, et peut:
<ul><li>
faire perdre des points d'Endurance à {{defender.name}}
<br>
@@ -30,6 +27,5 @@
</a>
{{/if}}
</li></ul>
</p>
</span>
</div>
</p>

View File

@@ -1,8 +1,7 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{attacker.name}} a fait perdre de l'endurance à {{defender.name}}
</h4>
<hr>
<div>
<p>
{{defender.name}} reste immobilisé. L'empoignade peut continuer.
</div>
</p>

View File

@@ -1,8 +1,7 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{attacker.name}} a projeté {{defender.name}} au sol
</h4>
<hr>
<div>
<p>
L'empoignade est terminée et a été supprimée.
</div>
</p>

View File

@@ -1,5 +1,4 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{#if (eq mode "empoigner")}}
{{attacker.name}} tente d'empoigner {{defender.name}}
{{/if}}
@@ -16,7 +15,7 @@
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if (gte empoignade.system.pointsemp 2)}}
@@ -75,4 +74,4 @@
</span>
<br>Points d'Emp: {{empoignade.system.pointsemp}}
{{/if}}
</div>
</p>

View File

@@ -1,9 +1,8 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{attacker.name}} tente d'empoigner {{defender.name}}
</h4>
<hr>
<div>
<p>
<span class='chat-card-button-area'>
<br>
<strong>{{attacker.name}} tente d'empoigner {{defender.name}}, qui est équipé d'une arme de mêlée. {{defender.name}}
@@ -16,4 +15,4 @@
Poursuivre l'empoignade
</a>
</span>
</div>
</p>

View File

@@ -1,15 +1,14 @@
<img class="chat-icon" src="{{herbe.img}}" data-tooltip="fabrication" />
<h4>
<h4><img class="chat-icon" src="{{herbe.img}}" data-tooltip="fabrication" />
{{alias}} a fabriqué une potion de {{herbe.system.categorie}} de {{herbe.name}}, avec {{herbe.nbBrins}} brins.
</h4>
<hr>
<div>
<p>
{{#if (eq nbBrinsReste 0)}}
Toute l'herbe a été consommée par la potion. L'herbe a été supprimée de l'inventaire.
{{else}}
La quantité d'herbe est désormais de {{nbBrinsReste}} et a été mise à jour automatiquement.
{{/if}}
</div>
<div>
</p>
<p>
Pensez à mettre la potion dans une fiole !
</div>
</p>

View File

@@ -1,7 +1,15 @@
<div>
<span {{#if ajustements}}class="tooltip tooltip-dotted" {{/if}}>
{{rolled.caracValue}} à {{plusMoins rolled.finalLevel}}
{{#if ajustements}}
<span {{#if ajustements}}class="tooltip-overflow tooltip-dotted" {{/if}}>
<span>
<span>{{rolled.caracValue}} à {{plusMoins rolled.finalLevel}}</span>
{{#if ajustements}}
{{/if}}
{{#if rolled.factorHtml}}<span class="rdd-diviseur">&times;{{{rolled.factorHtml}}}</span>{{/if}}
<span>= {{rolled.score}}%</span>
{{#if rolled.factorHtml}}
<span class="rdd-diviseur">&times;{{{rolled.factorHtml}}}</span>
{{/if}}
</span>
<div class="tooltiptext ttt-ajustements">
{{#each ajustements as |item key|}}
{{#if item.used}}
@@ -15,13 +23,7 @@
{{/if}}
{{/each}}
</div>
{{/if}}
{{#if rolled.factorHtml}}<span class="rdd-diviseur">&times;{{{rolled.factorHtml}}}</span>{{/if}}
</span>
<span>= {{rolled.score}}%</span>
{{#if rolled.factorHtml}}
<span class="rdd-diviseur">&times;{{{rolled.factorHtml}}}</span>
{{/if}}
</div>
<div>
<span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span>

View File

@@ -1,5 +1,5 @@
<img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/>
<h4>Déclenchement de sort: {{sortReserve.name}}</h4>
<h4><img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/>
Déclenchement de sort: {{sortReserve.name}}</h4>
<br> Vous avez déclenché {{#if sortReserve.system.echectotal}}<strong>l'échec total</strong>{{else}}le sort{{/if}}
en réserve en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.coord}}).
<br>Ce sort a {{sortReserve.system.ptreve}} points de Rêve
@@ -7,7 +7,7 @@ en réserve en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.
{{timestamp-imgSigneHeure sortReserve.system.heurecible}} {{sortReserve.system.heurecible}}
{{else}}indéterminée{{/if}}
{{#if sort}}
<div class="poesie-extrait poesie-overflow">
<p class="poesie-extrait poesie-overflow">
{{{sort.system.description}}}
</div>
</p>
{{/if}}

View File

@@ -1,9 +1,8 @@
<img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
<h4>
<h4><img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
La {{item.type}} enchantée {{item.name}} de {{alias}} a perdu un Point de Rêve (nouveau total : {{nouveaupr}}).</h4>
<hr>
<div>
<p>
{{#if (and (eq item.type 'potion') (eq nouveaupr 0))}}
Sa {{item.type}} étant désormais à 0 Point de Rêve, elle est inutilisable et peut être jetée.
{{/if}}
</div>
</p>

View File

@@ -1,5 +1,5 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/>
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}" data-rencontre-round="{{nbRounds}}">
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/>
{{alias}} rencontre {{#if (eq rencontre.system.genre 'f')}}une{{else}}un{{/if}} {{rencontre.name}} de force {{rencontre.system.force}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}

View File

@@ -3,8 +3,8 @@
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>{{#if rolled.isSuccess}}
<p>{{#if rolled.isSuccess}}
{{alias}} s'est accordé à {{entite}}
{{else}}ne s'est pas accordé à {{entite}}, il pourra réessayer à sa prochaine attaque.
{{/if}}
</div>
</p>

View File

@@ -1,14 +1,13 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp" data-tooltip="préparation alchimique" />
<h4>
<h4><img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.webp" data-tooltip="préparation alchimique" />
{{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} a réussi son opération alchimique ! Il/Elle peut passer à l'étape suivante de sa recette.
{{else}}
{{alias}} a raté son opération alchimique ! Sa recette est un echec.
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>

View File

@@ -4,5 +4,5 @@
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
{{~#if rolled.isSuccess}}
<hr>
<span>Un point de chance est dépensé, l'action peut être retentée!</span>
<p>Un point de chance est dépensé, l'action peut être retentée!</p>
{{/if}}

View File

@@ -1,10 +1,10 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>{{alias}} attaque à {{diffLibre}}: {{arme.name}}</h4>
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} attaque à {{diffLibre}}: {{arme.name}}</h4>
<p>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
{{#if tactique}}
<div>
<p>
{{#if (eq tactique 'charge')}}
<img class="chat-icon" src="icons/svg/thrust.svg" data-tooltip="charge" height="32" width="32" />
C'est une charge, vos parades auront un -4 et vous ne pourrez pas esquiver!
@@ -14,9 +14,9 @@
Votre feinte peut faire mouche!
{{/if}}
{{/if}}
</div>
</p>
{{/if}}
<div>
<p>
{{#if rolled.isSuccess}}
<span><strong>{{show.cible}}</strong> doit se défendre à <strong>{{diffLibre}}</strong>, ou encaisser à
{{~#if (eq dmg.mortalite 'non-mortel')}}
@@ -37,4 +37,4 @@
<span>Votre attaque a échoué!</span>
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>

View File

@@ -1,15 +1,14 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
{{alias}} {{#if rolled.isSuccess}}chante{{else}}tente de chanter{{/if}} {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .
{{else}}
{{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}}

View File

@@ -1,5 +1,4 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} {{show.title}}:
{{#if selectedCarac}}{{selectedCarac.label}}
{{#if competence}}
@@ -9,12 +8,12 @@
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
<span>{{#if rolled.ptTache}}{{rolled.ptTache}} points de tâche{{/if}}{{#if rolled.ptQualite}}{{#if rolled.ptTache}},{{/if}} Qualité ajustée de {{rolled.ptQualite}}{{/if}}</span>
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
{{~#if show.explications}}
<div>
<p>
{{show.explications}}
</div>
</p>
{{/if}}

View File

@@ -1,15 +1,14 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
{{alias}} {{#if rolled.isSuccess}}danse{{else}}tente de danser{{/if}} {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .
{{else}}
{{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}}

View File

@@ -1,9 +1,9 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>{{alias}} esquive une attaque à {{diffLibre}}</h4>
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} esquive une attaque à {{diffLibre}}</h4>
<p>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
<span>Attaque esquivée!</span>
{{#if rolled.isPart}}
@@ -14,10 +14,10 @@
<span>L'esquive de {{alias}} a échoué!</span>
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{#if attackerRoll.tactique}}
<div>
<p>
{{#if (eq attackerRoll.tactique 'charge')}}
<img class="chat-icon" src="icons/svg/thrust.svg" data-tooltip="charge" height="32" width="32" />
C'était une charge, les parades de l'adversaire de {{alias}} auront un -4 et il ne pourra pas esquiver!
@@ -25,5 +25,5 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd06.svg" data-tooltip="feinte" height="32" width="32" />
C'était une feinte!
{{/if}}
</div>
</p>
{{/if}}

View File

@@ -1,5 +1,4 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" data-tooltip="Ethylisme" />
<h4>
<h4><img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/objets/chope_gres.webp" data-tooltip="Ethylisme" />
{{alias}} boit un verre d'alcool de force {{jetVie.forceAlcool}}
{{#if alcool}}
<br>{{alcool.name}}

View File

@@ -1,7 +1,5 @@
{{#if competence.img}}
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{/if}}
<h4>
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} {{#if show.title}}{{show.title}}: {{/if}}
{{#if selectedCarac}}{{selectedCarac.label}}
{{#if competence}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}{{/if}}

View File

@@ -1,15 +1,14 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
{{alias}} joue à : {{oeuvre.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} a gagné la partie !
{{else}}
{{alias}} a perdu ...
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}}

View File

@@ -1,11 +1,11 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>{{alias}} lit le signe {{signe.name}}</h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} lit le signe {{signe.name}}</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} a gagné {{xpSort}} points d'expérience en sorts en {{competence.name}}.
{{else}}
{{alias}} n'a pas pu interpréter le signe draconique.
{{/if}}
</div>
</p>

View File

@@ -1,5 +1,5 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/>
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}">
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}"/>
{{alias}} tente de {{maitrise.verbe}} {{grammar-le tmr.genre}}
{{#if isTMRCache}}
{{caseTmr-type tmr.coord}}

View File

@@ -1,10 +1,9 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} a médité : {{meditation.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} aperçoit un signe draconique éphémère, qu'il faut aller lire en <strong>{{typeTmr-name meditation.system.tmr}}</strong>.
{{else}}
@@ -12,4 +11,4 @@
{{/if}}
<br><span>{{alias}} s'est fatigué de 2 cases.</span>
{{#if rolled.isEPart}}<br><span>Son échec {{#if rolled.isETotal}}total{{else}}particulier{{/if}} augmente de 1 la difficulté de la méditation!</span>{{/if~}}
</div>
</p>

View File

@@ -1,9 +1,9 @@
<img class="chat-icon" src="icons/svg/lightning.svg" data-tooltip="Météo" />
<h4>Météo aléatoire</h4>
<h4><img class="chat-icon" src="icons/svg/lightning.svg" data-tooltip="Météo" />
Météo aléatoire</h4>
<ul>
<li>Vent: {{lowerFirst vent.description}} {{grammar-apostrophe 'de' vent.direction}}, force {{vent.force}}</li>
<li>Mer {{lowerFirst mer.description}}, {{grammar-apostrophe 'de' mer.direction}}, force {{mer.force}}</li>
<li>Température {{lowerFirst temperature.description}} ({{plusMoins temperature.force}})</li>
<li>Couverture nuageuse: {{lowerFirst nuage.description}}</li>
<li>Pluie: {{lowerFirst pluie.description}}</li>
</div>
</ul>

View File

@@ -1,15 +1,14 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
{{alias}} {{#if rolled.isSuccess}}interprete{{else}}tente de jouer{{/if}} le morceau : {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .
{{else}}
{{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}}

View File

@@ -1,16 +1,15 @@
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
{{alias}} tente d'interpréter {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
</h4>
<br>{{upperFirst oeuvre.system.default_carac}} / {{oeuvre.system.competence}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{#if rolled.isSuccess}}
{{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .
{{else}}
{{alias}} manque d'inspiration, son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-description.hbs" oeuvre.system}}

View File

@@ -1,9 +1,9 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>{{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4>
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4>
<p>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
<span>
{{#if rolled.isSuccess}}
Attaque parée!
@@ -13,27 +13,27 @@
{{/if}}
</span>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>
{{#if (eq show.recul 'encaisse')}}<div>{{alias}} ne recule pas malgré la violence du coup.</div>
{{else if (eq show.recul 'chute')}}<div>Sous la violence du coup, {{alias}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</div>
{{else if (eq show.recul 'recul')}}<div>La violence du coup fait reculer {{alias}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</div>
{{#if (eq show.recul 'encaisse')}}<p>{{alias}} ne recule pas malgré la violence du coup.</p>
{{else if (eq show.recul 'chute')}}<p>Sous la violence du coup, {{alias}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</p>
{{else if (eq show.recul 'recul')}}<p>La violence du coup fait reculer {{alias}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</p>
{{/if}}
{{#if (eq show.deteriorationArme 'resiste')}}
<div>L'arme résiste au choc de la parade.</div>
<p>L'arme résiste au choc de la parade.</p>
{{else if (eq show.deteriorationArme 'brise')}}
<div>Sous la violence de la parade, {{arme.name}} s'est brisée!</div>
<p>Sous la violence de la parade, {{arme.name}} s'est brisée!</p>
{{else if (eq show.deteriorationArme 'perte')}}
<div>En parant, l'arme perd {{show.perteResistance}} de résistance.</div>
<p>En parant, l'arme perd {{show.perteResistance}} de résistance.</p>
{{/if}}
{{#if show.desarme}}
<div>Le défenseur {{alias}} lâche son arme qui tombe à ses pieds.</div>
<p>Le défenseur {{alias}} lâche son arme qui tombe à ses pieds.</p>
{{/if}}
{{#if attackerRoll.tactique}}
<div>
<p>
{{#if (eq attackerRoll.tactique 'charge')}}
<img class="chat-icon" src="icons/svg/thrust.svg" data-tooltip="charge" />
C'était une charge, les parades de l'adversaire auront un -4 et il ne pourra pas esquiver!
@@ -42,5 +42,5 @@
width="32" />
C'était une feinte!
{{/if}}
</div>
</p>
{{/if}}

View File

@@ -1,5 +1,4 @@
<img class="chat-icon" src="{{competence.img}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" />
{{#if (eq mode "attaque")}}
{{attacker.name}} tente de {{#if isECNIDefender}}conjurer la possession de{{else}}posséder{{/if}} {{defender.name}}
{{else}}
@@ -9,7 +8,7 @@
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
<span class='chat-card-button-area'>
<br>
{{#if (eq mode "attaque")}}
@@ -44,4 +43,4 @@
{{#if possession.isConjurer}}
<br><strong>Vous avez conjuré {{possession.system.typepossession}} ! La possession en cours a été supprimée.</strong>
{{/if}}
</div>
</p>

View File

@@ -1,5 +1,4 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{oeuvre.system.competence}}" />
{{alias}} {{#if rolled.isSuccess}}réalise{{else}}tente de cuisiner{{/if}} la recette : {{oeuvre.name}} (niveau {{oeuvre.system.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}

View File

@@ -1,5 +1,5 @@
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_legendes.webp" data-tooltip="Rêve de Dragon"/>
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}">
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_legendes.webp" data-tooltip="Rêve de Dragon"/>
{{alias}} tente de maîtriser un Rêve de Dragon!
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}

View File

@@ -1,17 +1,16 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
le {{#if selectedSort.system.isrituel}}rituel{{else}}sort{{/if}}
{{selectedSort.name}}
</h4>
<div>Pour {{selectedSort.system.ptreve_reel}} point{{~#if (gt selectedSort.system.ptreve_reel 1)}}s{{/if}} de rêve en {{tmr.label}} ({{tmr.coord}}).
<p>Pour {{selectedSort.system.ptreve_reel}} point{{~#if (gt selectedSort.system.ptreve_reel 1)}}s{{/if}} de rêve en {{tmr.label}} ({{tmr.coord}}).
{{#if show.reveInsuffisant}}
<span>Pas assez de rêve!</span>
{{/if}}
</div>
</p>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
<span>
{{#if rolled.isETotal}}Echec TOTAL
{{else if rolled.isEchec}}Echec
@@ -22,8 +21,8 @@
{{else}}{{depenseReve}} points de rêve ont été dépensés
{{~/if}}.
</span>
</div>
</p>
<hr>
<div class="poesie-extrait poesie-overflow">
<p class="poesie-extrait poesie-overflow">
{{{selectedSort.system.description}}}
</div>
</p>

View File

@@ -1,11 +1,10 @@
<img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
<h4>
<h4><img class="chat-icon" src="{{competence.img}}" data-tooltip="{{competence.name}}" />
{{alias}} travaille à sa t&acirc;che {{tache.name}}
<br>{{selectedCarac.label}}/{{competence.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.hbs"}}
<hr>
<div>
<p>
{{alias}} a obtenu {{rolled.ptTache}} point{{~#unless (eq rolled.ptTache 1)}}s{{/unless}} de tâche,
son avancement est de
<span class="rdd-roll-{{#if (gt tache.system.points_de_tache_courant 0)}}norm{{else}}etotal{{/if}}">{{tache.system.points_de_tache_courant}}
@@ -15,4 +14,4 @@
{{#if (and tache.system.fatigue appliquerFatigue)}}<br><span>Il s'est fatigué de {{tache.system.fatigue}} case{{~#if (gt tache.system.fatigue 1)}}s{{/if}}.</span>{{/if}}
{{#if rolled.isETotal}}<br><span>Son échec total augmente de 1 la difficulté de la tâche!</span>{{/if~}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.hbs"}}
</div>
</p>

View File

@@ -1,10 +1,10 @@
{{log 'chat-vente-item' this}}
<div class="post-item" data-transfer="{{transfer}}">
<h3>{{#if alias}}{{alias}} propose: {{else}}Acheter {{/if}}{{item.name}}</h3>
{{#if item.img}}
<img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{/if}}
<div class="poesie-extrait poesie-overflow card-content">{{{item.system.description}}}</div>
<h4>
{{#if item.img}}
<img class="chat-icon" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{/if}}
{{#if alias}}{{alias}} propose: {{else}}Acheter {{/if}}{{item.name}}</h4>
<p class="poesie-extrait poesie-overflow card-content">{{{item.system.description}}}</p>
<p>
{{#each properties as |property p|}}
<span>{{{property}}}</span><br>

View File

@@ -24,20 +24,18 @@
<div class="flex-group-center flex-shrink">
<h4>Le gardien gére les TMR du joueur, le joueur ne peut pas monter dans les TMR!</h4>
</div>
<hr>
{{/if}}
<div class="flex-group-center flex-shrink">
<img class="small-button-direction tmr-move" data-move="topleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topleft.svg">
<img class="small-button-direction tmr-move" data-move="top" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-top.svg">
<img class="small-button-direction tmr-move" data-move="topright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topright.svg">
</div>
<div class="flex-group-center flex-shrink">
<label>Coordonnées : </label><span id="tmr-pos">0</span>
</div>
<div class="flex-group-center flex-shrink">
<img class="small-button-direction tmr-move" data-move="bottomleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomleft.svg">
<img class="small-button-direction tmr-move" data-move="bottom" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottom.svg">
<img class="small-button-direction tmr-move" data-move="bottomright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomright.svg">
<label class="flex-group-center" >Coordonnées : <span id="tmr-pos">0</span> </label>
<div class="grid-move-tmr">
<img class="move-tmr-topleft tmr-move" data-move="topleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topleft.svg">
<img class="move-tmr-top tmr-move" data-move="top" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-top.svg">
<img class="move-tmr-topright tmr-move" data-move="topright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-topright.svg">
<img class="move-tmr-bottomleft tmr-move" data-move="bottomleft" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomleft.svg">
<img class="move-tmr-bottom tmr-move" data-move="bottom" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottom.svg">
<img class="move-tmr-bottomright tmr-move" data-move="bottomright" src="systems/foundryvtt-reve-de-dragon/assets/ui/dir-bottomright.svg">
</div>
<hr>
<div class="flex-group-center flex-shrink lire-signe-draconique">
<a>Lire un signe draconique</a>
</div>

View File

@@ -1,14 +0,0 @@
<form class="{{cssClass}}" autocomplete="off">
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.hbs"}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="informations">Informations</a>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.hbs"}}
</nav>
<section class="sheet-body">
<div class="tab items flexcol" data-group="primary" data-tab="informations">
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}}
</div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.hbs"}}
</section>
</form>

View File

@@ -1,14 +0,0 @@
<form class="{{cssClass}}" autocomplete="off">
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.hbs"}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="informations">Informations</a>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.hbs"}}
</nav>
<section class="sheet-body">
<div class="tab items flexcol" data-group="primary" data-tab="informations">
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}}
</div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.hbs"}}
</section>
</form>

View File

@@ -1,14 +0,0 @@
<form class="{{cssClass}}" autocomplete="off">
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.hbs"}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="informations">Informations</a>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-tab-environnement.hbs"}}
</nav>
<section class="sheet-body">
<div class="tab items flexcol" data-group="primary" data-tab="informations">
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}}
</div>
{{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.hbs"}}
</section>
</form>

View File

@@ -1,27 +0,0 @@
<form class="rdd-item-sheet-tarot" autocomplete="off">
<header class="sheet-header">
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
</div>
</header>
<section class="sheet-body">
<div class="flexrow">
<img class="profile-img" src="{{img}}" data-edit="img" data-tooltip="{{name}}"/>
<div class="flexcol">
<div class="form-group">
<label for="system.concept">Aspect</label>
<input class="attribute-value" type="text" name="system.concept" value="{{system.concept}}" data-dtype="String" />
</div>
<div class="form-group">
<label for="system.aspect">Sens</label>
<select name="system.aspect" data-dtype="String">
{{#select system.aspect}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-aspect-tarot.hbs"}}
{{/select}}
</select>
</div>
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-frequence.hbs"}}
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}}
</div>
</section>
</form>

View File

@@ -1,6 +1,8 @@
<header class="sheet-header">
<div class="sheet-header-row">
<img class="profile-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
</div>
</div>
</header>

View File

@@ -0,0 +1,22 @@
<section>
{{> "systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/header.hbs"}}
<fieldset>
<div class="form-group">
<label for="system.concept">Concept</label>
<input type="text" name="system.concept" value="{{system.concept}}" />
</div>
<div class="form-group">
<label for="system.aspect">Aspect</label>
<input type="text" name="system.aspect" value="{{system.aspect}}" />
</div>
<div class="form-group">
<label for="system.frequence">Fréquence</label>
<input type="number" name="system.frequence" value="{{system.frequence}}" data-dtype="Number" />
</div>
</fieldset>
{{>"systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/template-description.hbs"}}
</section>

View File

@@ -36,9 +36,10 @@
</tr>
{{#each gmAstrologie.ajustementsActors as |ajustementActeur|}}
<tr class="heure-naissance" data-heure-naissance="{{actor.system.heure}}">
<td>
<td class="info-acteur">
<img class="img-signe-heure" src="{{actor.img}}" data-tooltip="{{actor.name}}" />
{{actor.name}} {{timestamp-imgSigneHeure actor.system.heure}}
<span>{{actor.name}}</span>
{{timestamp-imgSigneHeure actor.system.heure}}
</td>
{{#each ajustementActeur.ajustements as |ajustement|}}
<td>{{#if (ne ajustement.ajustement 0)}}

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