Compare commits
	
		
			66 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0456221cf7 | |||
| 583b4ff003 | |||
| b4ac906802 | |||
| 395c7a4cc3 | |||
| 27bc07f64a | |||
| 2f3ec7bab0 | |||
| 8d39a0526f | |||
| f83548b91e | |||
| 90d17a3477 | |||
| fb15f3eb38 | |||
| 4df0eab574 | |||
| c8d589f0d2 | |||
| d7470836a5 | |||
| 817fa8e62a | |||
| 0fe4f64343 | |||
| d6b5b0a550 | |||
| c9d87851bd | |||
| 5b48fda3d0 | |||
| abae85157b | |||
| da2dca1769 | |||
| 6e405ea753 | |||
| a96f4bf641 | |||
| a0f42204d5 | |||
| c25320755a | |||
| aa5f159a91 | |||
| bb80391a47 | |||
| 1abb757b6b | |||
| 84c44d1f6d | |||
| ccb939207d | |||
| cd38a197cc | |||
| 6b053b189b | |||
| cc4cbbc771 | |||
| 0850789ed7 | |||
| 7a6ccac7fa | |||
| ed64d823ac | |||
| 3162264afa | |||
| e53eda5b42 | |||
| 47a7564a1c | |||
| f7a6fee51d | |||
| 0b3f08ef29 | |||
| 8df9c8ddf5 | |||
| 4cbe652a91 | |||
| 3eb1179c40 | |||
| cf185844af | |||
| 250b936fae | |||
| cd8268f569 | |||
| c04e0cec78 | |||
| 1d5fe1af71 | |||
| e96a627c37 | |||
| 06c3d2f80a | |||
| d07f5a41e7 | |||
| 856d038dc9 | |||
| 791593ad38 | |||
| 42179dab1d | |||
| 83631cd366 | |||
| 01cf47ad55 | |||
| d492b37a45 | |||
| ecdcdb69d5 | |||
| 8479fdda8a | |||
| 83e57fbbc7 | |||
| 2d256b1217 | |||
| 526d38d32e | |||
| 2ff3dfef89 | |||
| f1b6c01cd7 | |||
| 675fe5838e | |||
| bafdec9924 | 
| @@ -12,6 +12,8 @@ jobs: | |||||||
|  |  | ||||||
|     #- uses: actions/checkout@v3 |     #- uses: actions/checkout@v3 | ||||||
|     - uses: RouxAntoine/checkout@v3.5.4 |     - uses: RouxAntoine/checkout@v3.5.4 | ||||||
|  |       with: | ||||||
|  |         ref: 'v13' | ||||||
|  |  | ||||||
|     # get part of the tag after the `v` |     # get part of the tag after the `v` | ||||||
|     - name: Extract tag version number |     - name: Extract tag version number | ||||||
| @@ -46,7 +48,7 @@ jobs: | |||||||
|          apt update -y |          apt update -y | ||||||
|          apt install -y zip |          apt install -y zip | ||||||
|  |  | ||||||
|     - run: zip -r ./rddsystem.zip system.json template.json README.md LICENSE.txt assets/ fonts/ icons lang/ module/ packs/ pic/ sounds/ styles/ templates/  |     - run: zip -r ./rddsystem.zip system.json template.json README.md LICENSE.txt assets/ css/ fonts/ icons lang/ module/ packs/ pic/ sounds/ styles/ templates/ | ||||||
|  |  | ||||||
|     - name: setup go |     - name: setup go | ||||||
|       uses: actions/setup-go@v3 |       uses: actions/setup-go@v3 | ||||||
| @@ -69,6 +71,6 @@ jobs: | |||||||
|         id: 'foundryvtt-reve-de-dragon' |         id: 'foundryvtt-reve-de-dragon' | ||||||
|         version: ${{github.event.release.tag_name}} |         version: ${{github.event.release.tag_name}} | ||||||
|         manifest: 'https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json' |         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/v11/changelog.md' |         notes: 'https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v13/changelog.md' | ||||||
|         compatibility-minimum: '12' |         compatibility-minimum: '13' | ||||||
|         compatibility-verified: '12' |         compatibility-verified: '13' | ||||||
| @@ -1,14 +0,0 @@ | |||||||
| Pour que le bug soit traité, merci de préciser quelques détails. |  | ||||||
|  |  | ||||||
| ### Environment |  | ||||||
|  |  | ||||||
| > Indiquez quelques éléments de votre installation |  | ||||||
|  |  | ||||||
| * Foundry VTT Version: (Example 0.5.4) |  | ||||||
| * OS: [Windows, MacOS, Linux (which distro)] |  | ||||||
| * Modules ?: Liste des modules utilisés |  | ||||||
|  |  | ||||||
| ### Description du problème |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /label ~Bug ~Nonrepro |  | ||||||
| @@ -1,14 +0,0 @@ | |||||||
|  |  | ||||||
| ### Résumé de la fonctionnalité |  | ||||||
|  |  | ||||||
| > Décrivez de manière simple et concise la fonction que vous voulez voir ajoutée. |  | ||||||
|  |  | ||||||
| ### Expérience Utilisateur |  | ||||||
|  |  | ||||||
| > Indiquez ce que l'utilisateur aura comme bénéfice avec cette fonction. |  | ||||||
|  |  | ||||||
| ### Priority/Importance |  | ||||||
|  |  | ||||||
| > Selon vous, quelle est l'importance de cette fonctionnalité. |  | ||||||
|  |  | ||||||
| /label ~Feature |  | ||||||
| Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB | 
| Before Width: | Height: | Size: 193 KiB After Width: | Height: | Size: 193 KiB | 
| Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB | 
| Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB | 
| Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB | 
| Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB | 
| Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB | 
| Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 716 KiB After Width: | Height: | Size: 716 KiB | 
| Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB | 
| Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB | 
| Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB | 
| Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB | 
| Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB | 
| Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB | 
| Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB | 
| Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB | 
| Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 188 B | 
| Before Width: | Height: | Size: 162 B After Width: | Height: | Size: 162 B | 
| Before Width: | Height: | Size: 634 KiB After Width: | Height: | Size: 634 KiB | 
| Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB | 
| Before Width: | Height: | Size: 637 KiB After Width: | Height: | Size: 637 KiB | 
							
								
								
									
										116
									
								
								changelog.md
									
									
									
									
									
								
							
							
						
						| @@ -1,11 +1,55 @@ | |||||||
|  | # 13.0 | ||||||
|  | ## 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 | ||||||
|  |  | ||||||
|  | ## 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 | ## 12.0.49 - La deuxième lame d'Astrobazzarh | ||||||
|  |  | ||||||
| - Corrections | - Corrections | ||||||
|   - les défenses particulières sont correctement affichées |   - 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 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 |   - Les attaques à distance n'ont pas de difficulté libre | ||||||
|  |  | ||||||
| ## 12.0.48 - La chèvre d'Astrobazzarh | ## 12.0.48 - La chèvre d'Astrobazzarh | ||||||
|  |  | ||||||
| - le Bandersnatch a une protection de 10 | - le Bandersnatch a une protection de 10 | ||||||
| - la consistance chèvre est maintenant possible dans les recettes | - la consistance chèvre est maintenant possible dans les recettes | ||||||
|   alchimiques (et toutes les consistances avec accents) |   alchimiques (et toutes les consistances avec accents) | ||||||
| @@ -14,10 +58,12 @@ | |||||||
| - Correction: les réussites particulières fonctionnent avec les caractéristiques dérivées | - Correction: les réussites particulières fonctionnent avec les caractéristiques dérivées | ||||||
|  |  | ||||||
| ## 12.0.47 | ## 12.0.47 | ||||||
|  |  | ||||||
| - Correction sur les mise à jour en cascade - | - Correction sur les mise à jour en cascade - | ||||||
| - Correction sur le force rendering après un changement de competence | - Correction sur le force rendering après un changement de competence | ||||||
|  |  | ||||||
| ## 12.0.46 - Le double demi d'Astrobazzarh | ## 12.0.46 - Le double demi d'Astrobazzarh | ||||||
|  |  | ||||||
| - correction des raffraîchissement lors du sommeil qui empêchait de dormir | - correction des raffraîchissement lors du sommeil qui empêchait de dormir | ||||||
|   plusieurs heures |   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) | - Si la fatigue n'est pas utilisée, les rounds dans les TMR font perdre de l'endurance (au lieu d'en gagner) | ||||||
| @@ -134,9 +180,11 @@ | |||||||
| - la description du chrasme contient le lien vers son venin plutôt qu'un tableau | - la description du chrasme contient le lien vers son venin plutôt qu'un tableau | ||||||
|  |  | ||||||
| ## 12.0.28 - Les réserves d'Astrobazzarh | ## 12.0.28 - Les réserves d'Astrobazzarh | ||||||
|  |  | ||||||
| - possibilité de mettre en réserve depuis un sort connu | - possibilité de mettre en réserve depuis un sort connu | ||||||
|  |  | ||||||
| ## 12.0.27 - Les vêtements d'Astrobazzarh | ## 12.0.27 - Les vêtements d'Astrobazzarh | ||||||
|  |  | ||||||
| - Ajout de la liste des armures dans l'onglet caractéristiques | - Ajout de la liste des armures dans l'onglet caractéristiques | ||||||
| - Ajout d'une option pour choisir une carte des TMR alternatives | - 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 | - Le Gardien peut créer des sorts en réserve parmi les sorts d'un personnage | ||||||
| @@ -157,12 +205,14 @@ | |||||||
|   - les modèles de personnages non joueurs sont non-liés par défaut |   - les modèles de personnages non joueurs sont non-liés par défaut | ||||||
|  |  | ||||||
| ## 12.0.26 - Astrobazzarh le Haut-rêvant | ## 12.0.26 - Astrobazzarh le Haut-rêvant | ||||||
|  |  | ||||||
| - bouton pour le don de haut-rêve en un clic | - 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" | - les compétences de draconic ne sont plus précédées de "Voie de" | ||||||
|   - migration des compétences & compendiums |   - migration des compétences & compendiums | ||||||
| - Correction feuille simplifiée qui ne s'affichait pas en cas de sort variable | - Correction feuille simplifiée qui ne s'affichait pas en cas de sort variable | ||||||
|  |  | ||||||
| ## 12.0.24 - Les ajustements d'Astrobazzarh | ## 12.0.24 - Les ajustements d'Astrobazzarh | ||||||
|  |  | ||||||
| - amélioration | - amélioration | ||||||
|   - meilleure gestion des noms des voies de draconic |   - 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 |   - affichage du détail des sorts avec le nom de voie, 'court', la difficulté, le coût | ||||||
| @@ -172,6 +222,7 @@ | |||||||
|   - on peut maintenant saisir et supprimer les bonus de cases de manière intuitive |   - on peut maintenant saisir et supprimer les bonus de cases de manière intuitive | ||||||
|  |  | ||||||
| ## 12.0.23 - La bibliothèque d'Astrobazzarh | ## 12.0.23 - La bibliothèque d'Astrobazzarh | ||||||
|  |  | ||||||
| - corrections mineures | - corrections mineures | ||||||
|   - meilleure gestion de la parade des armes naturelles |   - meilleure gestion de la parade des armes naturelles | ||||||
|   - cas de "User lacks permission to update" pour les blessures et les StatusEffects |   - cas de "User lacks permission to update" pour les blessures et les StatusEffects | ||||||
| @@ -187,19 +238,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é. |   - 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 | ## 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 | - 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 | - Fix: le choix des effets dans les options s'affiche correctement | ||||||
|  |  | ||||||
| ## 12.0.20 - Le tableau d'Astrobazzarh | ## 12.0.20 - Le tableau d'Astrobazzarh | ||||||
|  |  | ||||||
| - Ecran d'accueil officiel Scriptarium | - Ecran d'accueil officiel Scriptarium | ||||||
|  |  | ||||||
| ## 12.0.19 - La témérité d'Astrobazzarh | ## 12.0.19 - La témérité d'Astrobazzarh | ||||||
|  |  | ||||||
| - Fix | - Fix | ||||||
|   - les défenses des créatures sont correctement filtrées |   - les défenses des créatures sont correctement filtrées | ||||||
|   - le lancer d'initiative pour tous les personnages/PNJs fonctionne correctement |   - le lancer d'initiative pour tous les personnages/PNJs fonctionne correctement | ||||||
|   - les lieux et commerces n'ont pas d'initiative |   - les lieux et commerces n'ont pas d'initiative | ||||||
|  |  | ||||||
| ## 12.0.18 - A la barbe d'Astrobazzarh | ## 12.0.18 - A la barbe d'Astrobazzarh | ||||||
|  |  | ||||||
| - Améliorations sur la feuille de PNJ simplifiée | - Améliorations sur la feuille de PNJ simplifiée | ||||||
|   - Ajout du portrait |   - Ajout du portrait | ||||||
|   - Ajout du corps à corps |   - Ajout du corps à corps | ||||||
| @@ -216,11 +271,13 @@ | |||||||
| - Ajout d'un indicateur pour les armes de parade nécessitant une significative | - Ajout d'un indicateur pour les armes de parade nécessitant une significative | ||||||
|  |  | ||||||
| ## 12.0.16 - Le secret d'Astrobazzarh | ## 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) | - 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 | - 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 | - Ajout d'une option pour la localisation des blessures | ||||||
|  |  | ||||||
| ## 12.0.15 - Le messager d'Astrobazzarh | ## 12.0.15 - Le messager d'Astrobazzarh | ||||||
|  |  | ||||||
| - Correction des faces de dés personalisés dice-so-nice | - Correction des faces de dés personalisés dice-so-nice | ||||||
| - Les messages de maladies ne sont plus publics | - Les messages de maladies ne sont plus publics | ||||||
| - Les messages privés dans les TMR sont aussi envoyés au GM | - Les messages privés dans les TMR sont aussi envoyés au GM | ||||||
| @@ -228,6 +285,7 @@ | |||||||
| - Amélioration du rendu des tables de compendiums (commande /table) | - Amélioration du rendu des tables de compendiums (commande /table) | ||||||
|  |  | ||||||
| ## 12.0.14 - Les légions d'Astrobazzarh | ## 12.0.14 - Les légions d'Astrobazzarh | ||||||
|  |  | ||||||
| - Feuille de PNJ: | - Feuille de PNJ: | ||||||
|   - boutons standard (encaissement, ...) |   - boutons standard (encaissement, ...) | ||||||
|   - boutons pour ajuster les compteurs |   - boutons pour ajuster les compteurs | ||||||
| @@ -236,15 +294,18 @@ | |||||||
|   - gestion des armes |   - gestion des armes | ||||||
|  |  | ||||||
| ## 12.0.13 - La Chance d'Astrobazzarh | ## 12.0.13 - La Chance d'Astrobazzarh | ||||||
|  |  | ||||||
| - Fix: jets de caractéristiques | - Fix: jets de caractéristiques | ||||||
|  |  | ||||||
| ## 12.0.12 - L'étalage d'Astrobazzarh | ## 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 | - 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 | - Début de Feuille PNJ au format des encarts Scriptarium | ||||||
|   - support des jets de caractéristiques |   - support des jets de caractéristiques | ||||||
|   - support des jets de compétences |   - support des jets de compétences | ||||||
|  |  | ||||||
| ## 12.0.11 - Le scriptorium d'Astrobazzarh | ## 12.0.11 - Le scriptorium d'Astrobazzarh | ||||||
|  |  | ||||||
| - ajout d'un bouton pour générer les éléments de description d'un personnage | - 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 du logo en background dans la liste des systèmes Foundry | ||||||
| - ajout d'un champ pour le métier | - ajout d'un champ pour le métier | ||||||
| @@ -253,10 +314,12 @@ | |||||||
|   - export de l'esquive avec armure et sans armure |   - export de l'esquive avec armure et sans armure | ||||||
|  |  | ||||||
| ## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh | ## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh | ||||||
|  |  | ||||||
| - corrections de l'export scriptarium | - corrections de l'export scriptarium | ||||||
| - ajout d'une fonction avancée pour un exporter "scriptarium" des personnages | - ajout d'une fonction avancée pour un exporter "scriptarium" des personnages | ||||||
|  |  | ||||||
| ## 12.0.8 - La quincaillerie d'Astrobazzarh | ## 12.0.8 - La quincaillerie d'Astrobazzarh | ||||||
|  |  | ||||||
| - le propriétaire est indiqué dans les feuilles d'équipements/compétences/... | - le propriétaire est indiqué dans les feuilles d'équipements/compétences/... | ||||||
| - Ecaille d'efficacité | - Ecaille d'efficacité | ||||||
|   - l'écaille d'efficacité est prise en compte même si on n'utilise pas le ciblage en combat |   - l'écaille d'efficacité est prise en compte même si on n'utilise pas le ciblage en combat | ||||||
| @@ -266,6 +329,7 @@ | |||||||
|   - le tooltip de l'initiative affiche correctement l'initiative |   - le tooltip de l'initiative affiche correctement l'initiative | ||||||
|  |  | ||||||
| ## 12.0.7 - La propriété d'Astrobazzarh | ## 12.0.7 - La propriété d'Astrobazzarh | ||||||
|  |  | ||||||
| - correction des opérations faites à la création d'un Item: | - correction des opérations faites à la création d'un Item: | ||||||
|   - la durée des queues/rencontres/souffles |   - la durée des queues/rencontres/souffles | ||||||
|   - les effets draconiques d'un souffle/queue |   - les effets draconiques d'un souffle/queue | ||||||
| @@ -280,6 +344,7 @@ | |||||||
| - la commande /voyage affiche maintenant les compétences liées au terrain | - la commande /voyage affiche maintenant les compétences liées au terrain | ||||||
|  |  | ||||||
| ## 12.0.6 - Le bazar d'Astrobazzarh | ## 12.0.6 - Le bazar d'Astrobazzarh | ||||||
|  |  | ||||||
| - Corrections de l'inventaire en bazar: | - Corrections de l'inventaire en bazar: | ||||||
|   - un problème pouvait survenir en déplaçant les objets |   - un problème pouvait survenir en déplaçant les objets | ||||||
|     l'inventaire, qui fait qu'un conteneur se retrouve récursivement dans son |     l'inventaire, qui fait qu'un conteneur se retrouve récursivement dans son | ||||||
| @@ -294,22 +359,26 @@ | |||||||
| - Fix: restaurer la compatibilité Foundry 11 | - Fix: restaurer la compatibilité Foundry 11 | ||||||
|  |  | ||||||
| ## 12.0.5 - Les mauvais jours d'Astrobazzarh | ## 12.0.5 - Les mauvais jours d'Astrobazzarh | ||||||
|  |  | ||||||
| - Fix: on peut de nouveau ouvrir l'édition de calendrier | - Fix: on peut de nouveau ouvrir l'édition de calendrier | ||||||
| - Fix: on ne peut plus ouvrir plusieurs fenêtres de lancer de sort | - Fix: on ne peut plus ouvrir plusieurs fenêtres de lancer de sort | ||||||
| - Fix: Failed to execute 'getComputedStyle' on 'Window' | - Fix: Failed to execute 'getComputedStyle' on 'Window' | ||||||
|  |  | ||||||
| ## 12.0.4 - La plaie d'Astrobazzarh | ## 12.0.4 - La plaie d'Astrobazzarh | ||||||
|  |  | ||||||
| - **Support V12** | - **Support V12** | ||||||
|   - Fix: les boutons d'encaissement dans le tchat fonctionnent de nouveau |   - Fix: les boutons d'encaissement dans le tchat fonctionnent de nouveau | ||||||
|   - Fix warnings sur "Die" et AudioHelper |   - Fix warnings sur "Die" et AudioHelper | ||||||
|  |  | ||||||
| ## 12.0.3 - L'hémorragie d'Astrobazzarh | ## 12.0.3 - L'hémorragie d'Astrobazzarh | ||||||
|  |  | ||||||
| - **Support V12** | - **Support V12** | ||||||
|   - On peut de nouveau ouvrir un acteur blessé après redémarrage du monde |   - 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 |   - 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 |   - Le choix de ne plus afficher les demandes de suppression est bien pris en compte | ||||||
|  |  | ||||||
| ## 12.0.2 - Les pluies d'Astrobazzarh | ## 12.0.2 - Les pluies d'Astrobazzarh | ||||||
|  |  | ||||||
| - **Support V12** | - **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) |   - 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 |   - la fenêtre de calendrier s'ouvre correctement | ||||||
| @@ -324,13 +393,16 @@ | |||||||
|   - correction d'erreurs intempestives 'User ... lacks permission to update ...' |   - correction d'erreurs intempestives 'User ... lacks permission to update ...' | ||||||
|  |  | ||||||
| # 11.2 | # 11.2 | ||||||
|  |  | ||||||
| ## 11.2.21 - Le questionnement d'Akarlikarlikar | ## 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 | - 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 | - 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 | - Les effets s'appliquent correctement sur les créatures | ||||||
| - La date et l'heure (draconiques) sont affichées dans les messages du tchat | - La date et l'heure (draconiques) sont affichées dans les messages du tchat | ||||||
|  |  | ||||||
| ## 11.2.20 - Le soulagement d'Akarlikarlikar | ## 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 | - 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 | - 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 | - La fenêtre d'astrologie du gardien affiche toutes les heures lues par un personnage | ||||||
| @@ -340,12 +412,15 @@ | |||||||
| - Les messages de récupération de rêve en cas de Rêve de Dragon sont clarifiés | - 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 | ## 11.2.19 - Les hémorroïdes d'Akarlikarlikar | ||||||
|  |  | ||||||
| - La validation des jets d'encaissement par le Gardien fonctionne de nouveau | - La validation des jets d'encaissement par le Gardien fonctionne de nouveau | ||||||
|  |  | ||||||
| ## 11.2.18 - Le bourrichon d'Akarlikarlikar | ## 11.2.18 - Le bourrichon d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Les différentes listes de la feuille de personnage ont maintenant le bouton pour envoyer dans le tchat | - 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 | ## 11.2.17 - Le cache-oeil d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Le titre des fenêtre d'objet affiche de nouveau le type traduit | - Le titre des fenêtre d'objet affiche de nouveau le type traduit | ||||||
| - Les tooltips des boutons edit/delete sont maintenant en Français | - Les tooltips des boutons edit/delete sont maintenant en Français | ||||||
| - La case à cocher "Cacher les points de tâches" fonctionne de nouveau | - La case à cocher "Cacher les points de tâches" fonctionne de nouveau | ||||||
| @@ -354,35 +429,43 @@ | |||||||
| - La fenêtre des TMRs ne devrait plus afficher une zone noire au lieu de la carte. | - La fenêtre des TMRs ne devrait plus afficher une zone noire au lieu de la carte. | ||||||
|  |  | ||||||
| ## 11.2.16 - Le Tri d'Akarlikarlikar | ## 11.2.16 - Le Tri d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Tri alphabétique des items dans la fenêtre de création | - Tri alphabétique des items dans la fenêtre de création | ||||||
| - Mise à jour comptage de monde | - Mise à jour comptage de monde | ||||||
|  |  | ||||||
| ## 11.2.15 - La Table d'Akarlikarlikar | ## 11.2.15 - La Table d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Tirage automatique de la foce d'une rencontre (via la commande /tmrr) | - 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) | - Ajout de boutons pour ajouter des blessures "complètes" (ie avec perte d'endurance/vie) | ||||||
|  |  | ||||||
| ## 11.2.14 - Les petits pas d'Akarlikarlikar | ## 11.2.14 - Les petits pas d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Correction sur la gestion de la surprise | - Correction sur la gestion de la surprise | ||||||
| - Ordre des messages sur les cases humides | - Ordre des messages sur les cases humides | ||||||
|  |  | ||||||
| ## 11.2.13 - Les cent pas d'Akarlikarlikar | ## 11.2.13 - Les cent pas d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Ajout de la commande /voyage pour gérer la fatigue de marche des voyageurs | - Ajout de la commande /voyage pour gérer la fatigue de marche des voyageurs | ||||||
|  |  | ||||||
| ## 11.2.12 - Le somnifère  d'Akarlikarlikar | ## 11.2.12 - Le somnifère  d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Fix: les potions enchantées n'empêchent plus de finir correctement Château Dormant | - Fix: les potions enchantées n'empêchent plus de finir correctement Château Dormant | ||||||
|  |  | ||||||
| ## 11.2.11 - Le miroir d'Akarlikarlikar | ## 11.2.11 - Le miroir d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Changement des images de compétence de créatures morsure/pinces pour être dans le thème | - 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 | - 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 | - Fix: le refoulement ajoute correctement un souffle et revient à 0 en cas d'échec | ||||||
|  |  | ||||||
| ## 11.2.10 - Les expériences d'Akarlikarlikar | ## 11.2.10 - Les expériences d'Akarlikarlikar | ||||||
|  |  | ||||||
| - En cas d'expérience des caractéristiques dérivées, | - En cas d'expérience des caractéristiques dérivées, | ||||||
|   - si plusieurs caractéristiques pourraient recevoir l'expérience, une fenêtre demande au joueur |   - si plusieurs caractéristiques pourraient recevoir l'expérience, une fenêtre demande au joueur | ||||||
|   - si une seule caractéristique peut recevoir de l'expérience, c'est attribué automatiquement |   - 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 | - 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 | ## 11.2.9 - La barbe d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Amélioration des textes de tooltips | - Amélioration des textes de tooltips | ||||||
| - Les tooltips sont plus dans le thème de couleur du système Rêve de Dragon | - 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) | - Ajouts d'icones pour les attaque/initiative/soins dans les raccourcis sur les tokens (HUD) | ||||||
| @@ -394,19 +477,23 @@ | |||||||
| - Changement de l'icône d'état d'empoignade pour suivre les couleurs des autres icônes d'état | - 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 | ## 11.2.8 - L'éclairage d'Akarlikarlikar | ||||||
|  |  | ||||||
| - l'ajustement de la lumière jour/nuit s'étale sur moins de temps (vaisseau et Lyre) | - 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 nouveaux tooltips ne masquent plus l'information d'expérience | ||||||
| - les jets de dés pour maîtriser les rencontres fonctionnent de nouveau | - les jets de dés pour maîtriser les rencontres fonctionnent de nouveau | ||||||
|  |  | ||||||
| ## 11.2.7 - Les explications d'Akarlikarlikar | ## 11.2.7 - Les explications d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Ajout de tooltips sur la plupart des boutons, liens clickables, objets, tâches, ... | - 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 | - Fix: on peut de nouveau regarder l'inventaire avec les droits limités/observateur | ||||||
|  |  | ||||||
| ## 11.2.6 - Les réveils difficiles d'Akarlikarlikar | ## 11.2.6 - Les réveils difficiles d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Les changements de points de Cœur sont temporaires jusqu'à fin Château Dormant | - 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, ...) | - 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 | ## 11.2.2 - Les tendres moments d'Akarlikarlikar | ||||||
|  |  | ||||||
| - On peut maintenant avoir des points de Cœur pour des suivants/compagnons | - On peut maintenant avoir des points de Cœur pour des suivants/compagnons | ||||||
|   - diminuer les points de coeurs fait perdre du moral |   - diminuer les points de coeurs fait perdre du moral | ||||||
|   - on peut proposer un tendre moment |   - on peut proposer un tendre moment | ||||||
| @@ -425,11 +512,14 @@ | |||||||
|     ne bloquent plus les jets de dés |     ne bloquent plus les jets de dés | ||||||
|  |  | ||||||
| ## v11.2.1 - La technique d'Akarlikarlikar | ## 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". | - 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 | - 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 | Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi | ||||||
|  |  | ||||||
| ## v11.2.0 - Les Terres médianes d'Akarlikarlikar | ## v11.2.0 - Les Terres médianes d'Akarlikarlikar | ||||||
|  |  | ||||||
| - Les TMRs sont redimensionables | - Les TMRs sont redimensionables | ||||||
| - Nouveaux graphismes plus lisibles dans les TMRs | - Nouveaux graphismes plus lisibles dans les TMRs | ||||||
| - Nouveau code couleur des icônes dans les TMR: | - Nouveau code couleur des icônes dans les TMR: | ||||||
| @@ -443,12 +533,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 | - 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 | ||||||
|  |  | ||||||
| ## v11.1.6 - Les dissections de Werther de Zloth | ## v11.1.6 - Les dissections de Werther de Zloth | ||||||
|  |  | ||||||
| - Fix: on peut de nouveau donner des compétences aux créatures | - 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: 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 | - Fix: l'encaissement à valider par le MJ fonctionne de nouveau | ||||||
|  |  | ||||||
| ## v11.1.5 - Werther de Zloth l'Onirique | ## v11.1.5 - Werther de Zloth l'Onirique | ||||||
|  |  | ||||||
| - Fixes: | - Fixes: | ||||||
|   - la demande de défense ne marchait plus |   - la demande de défense ne marchait plus | ||||||
|   - la tête réserve extensible crée bien une case de réserve extensible (à modifier) |   - la tête réserve extensible crée bien une case de réserve extensible (à modifier) | ||||||
| @@ -463,6 +556,7 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi | |||||||
|   - pas de jets de vie pour les morts |   - pas de jets de vie pour les morts | ||||||
|  |  | ||||||
| ## v11.1.4 - Werther de Zloth l'Onirique | ## 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é | - 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: 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 | - Fix: la fatigue et l'éthylisme sont de nouveau pris en compte dans le calcul de l'éthylisme | ||||||
| @@ -472,15 +566,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 | - Esthétique: ne pas afficher "+0" pour les ajustements de jets/encaissement | ||||||
|  |  | ||||||
| ## v11.1.2 - Les vertèbres de Werther de Zloth | ## v11.1.2 - Les vertèbres de Werther de Zloth | ||||||
|  |  | ||||||
| - Fix: les jets d'encaissement fonctionnent de nouveau normalement | - 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 | - 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 | ## v11.1.1 - Les fumebols de Werther de Zloth | ||||||
|  |  | ||||||
| - Fix: on peut de nouveau afficher les vues détaillées | - 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: 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 | - Fix: cuisiner du gibier prend maintenant bien les proportaions en compte | ||||||
|  |  | ||||||
| ## v11.1.0 - Les choix de Werther de Zloth | ## v11.1.0 - Les choix de Werther de Zloth | ||||||
|  |  | ||||||
| - Les options suivantes peuvent être désactivées: | - Les options suivantes peuvent être désactivées: | ||||||
|   - La transformation de stress à Château Dormant |   - La transformation de stress à Château Dormant | ||||||
|   - La récuperation de chance à Château Dormant |   - La récuperation de chance à Château Dormant | ||||||
| @@ -498,7 +595,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) |   - en cas de charge, les particulières sont toujours en force (p125) | ||||||
|  |  | ||||||
| # v11.0 | # v11.0 | ||||||
|  |  | ||||||
| ## v11.0.28 - les fractures de Khrachtchoum | ## v11.0.28 - les fractures de Khrachtchoum | ||||||
|  |  | ||||||
| - La gravité de la blessure est affichée dans le résumé de l'encaissement | - La gravité de la blessure est affichée dans le résumé de l'encaissement | ||||||
| - Lors du changement d'acteur pendant le round | - 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é |   - le message annonçant le joueur dont c'est le tour ne contient plus d'informations de santé | ||||||
| @@ -510,12 +609,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 |   - le moral est indiqué avant l'icone d'appel au moral | ||||||
|  |  | ||||||
| ## v11.0.27 - Khrachtchoum le méticuleux | ## v11.0.27 - Khrachtchoum le méticuleux | ||||||
|  |  | ||||||
| - le tooltip dans les TMR reste visible si on ne bouge pas la souris | - le tooltip dans les TMR reste visible si on ne bouge pas la souris | ||||||
| - le surencombrement n'affecte QUE les actions physiques | - le surencombrement n'affecte QUE les actions physiques | ||||||
| - on peut de nouveau fabriquer une potion depuis la fenêtre d'édition de l'herbe | - 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 | - 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 | ## v11.0.26 - le crépuscule de Khrachtchoum | ||||||
|  |  | ||||||
| - gestion correcte des TMRs | - 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 |   - 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 |   - lorsqu'une fenêtre liée aux demi-rêve est affichée, cliquer sur les TMRs n'a pas d'effet | ||||||
| @@ -534,45 +635,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 | - les jets de compétences d'attaque des créatures fonctionnent de nouveau | ||||||
|  |  | ||||||
| ## v11.0.25 - la vision du rêve de Khrachtchoum | ## 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 | - Les TMRs restent affichées tant que le Haut-rêvant est en demi-rêve | ||||||
|  |  | ||||||
| ## v11.0.24 - les couleurs de Khrachtchoum | ## v11.0.24 - les couleurs de Khrachtchoum | ||||||
|  |  | ||||||
| - nouvelle carte des TMRs | - nouvelle carte des TMRs | ||||||
|  |  | ||||||
| ## v11.0.23 - la lumière de Khrachtchoum | ## v11.0.23 - la lumière de Khrachtchoum | ||||||
|  |  | ||||||
| - ajustement automatique de la luminosité selon l'heure pour les scènes: | - 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 une vision des tokens (sinon: ce n'est pas une scène de carte pour tokens) | ||||||
|   - avec illumination globale (correspondant à une illumination extérieure) |   - avec illumination globale (correspondant à une illumination extérieure) | ||||||
|   - quand lampe "allumée" dans la fenêtre du calendrier |   - quand lampe "allumée" dans la fenêtre du calendrier | ||||||
|  |  | ||||||
| ## v11.0.22 - les automatismes de Khrachtchoum le Problémeux | ## v11.0.22 - les automatismes de Khrachtchoum le Problémeux | ||||||
|  |  | ||||||
| - Macro pour attaquer avec les compétences de créatures | - Macro pour attaquer avec les compétences de créatures | ||||||
|  |  | ||||||
| ## v11.0.20 | ## v11.0.20 | ||||||
|  |  | ||||||
| - Macro pour attaquer avec les armes des personnages | - Macro pour attaquer avec les armes des personnages | ||||||
|  |  | ||||||
| ## v11.0.17 | ## v11.0.17 | ||||||
|  |  | ||||||
| - Fix: les actions de commerce ne s'appliquait pas bien aux personnages des tokens non liés | - Fix: les actions de commerce ne s'appliquait pas bien aux personnages des tokens non liés | ||||||
|  |  | ||||||
| ## v11.0.15 - L'apprentissage de Khrachtchoum | ## 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) | - 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 | ## v11.0.14 - Les pincettes de Khrachtchoum le Problémeux | ||||||
|  |  | ||||||
| - Correction du calcul de la place restante lors de l'ajout dans un conteneur | - 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 | ## 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 | - 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 | ## v11.0.12 - Les poids de la mesure de Khrachtchoum le Problémeux | ||||||
|  |  | ||||||
| - Correction des malus de surencombrement | - Correction des malus de surencombrement | ||||||
| - Le malus armure est correctement affiché dans l'onglet des caractéristiques | - Le malus armure est correctement affiché dans l'onglet des caractéristiques | ||||||
| - Correction d'orthographe et amélioration des messages des oeuvres d'art | - Correction d'orthographe et amélioration des messages des oeuvres d'art | ||||||
|  |  | ||||||
| ## v11.0.11 - Les bleus de Khrachtchoum le Problémeux | ## 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 | - 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. | - 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 | ## 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 | - 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 | - 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 |   créée au lieu de créer toujours une nouvelle tâche | ||||||
| @@ -583,12 +696,14 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi | |||||||
|   les heures dormies sont déduites des heures restant à dormir |   les heures dormies sont déduites des heures restant à dormir | ||||||
|  |  | ||||||
| ## v11.0.9 - Les Souvenirs de Khrachtchoum le Problémeux | ## v11.0.9 - Les Souvenirs de Khrachtchoum le Problémeux | ||||||
|  |  | ||||||
| - mode de saisie de l'archétype en vue détaillée | - mode de saisie de l'archétype en vue détaillée | ||||||
| - création  une nouvelle incarnation depuis l'archétype | - création  une nouvelle incarnation depuis l'archétype | ||||||
| - réorganisation de la fenêtre de sélection des règles optionnelles | - 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 | - correction de l'affichage du type dans les fenêtres d'objets | ||||||
|  |  | ||||||
| ## v11.0.8 - la poigne de Sémolosse | ## v11.0.8 - la poigne de Sémolosse | ||||||
|  |  | ||||||
| - lien vers le changelog | - lien vers le changelog | ||||||
| - organisation des compendiums du système | - organisation des compendiums du système | ||||||
| - correction de l'empoignade | - correction de l'empoignade | ||||||
| @@ -611,4 +726,3 @@ Vu qu'elles ne peuvent pas être utilisées, permet de savoir pourquoi | |||||||
| - correction des achats par le MJ sans acteur sélectionné | - correction des achats par le MJ sans acteur sélectionné | ||||||
|  |  | ||||||
| Cf branche v10 pour l'historique des versions 10 | Cf branche v10 pour l'historique des versions 10 | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2502
									
								
								css/foundryvtt-reve-de-dragon.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										37
									
								
								gulpfile.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,37 @@ | |||||||
|  | const gulp = require('gulp'); | ||||||
|  | const less = require('gulp-less'); | ||||||
|  |  | ||||||
|  | function onError(err) { | ||||||
|  |   util.log(util.colors.red.bold('[ERROR LESS]:'),util.colors.bgRed(err.message)); | ||||||
|  |   this.emit('end'); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* ----------------------------------------- */ | ||||||
|  | /*  Compile LESS | ||||||
|  | /* ----------------------------------------- */ | ||||||
|  | function compileLESS() { | ||||||
|  |   return gulp.src("less/foundryvtt-reve-de-dragon.less") | ||||||
|  |       .pipe(less()).on('error',console.log.bind(console)) | ||||||
|  |       .pipe(gulp.dest("./css")) | ||||||
|  | } | ||||||
|  | const css = gulp.series(compileLESS); | ||||||
|  |  | ||||||
|  | /* ----------------------------------------- */ | ||||||
|  | /*  Watch Updates | ||||||
|  | /* ----------------------------------------- */ | ||||||
|  | const SIMPLE_LESS = ["less/*.less", "less/item/*.less"]; | ||||||
|  |  | ||||||
|  | function watchUpdates() { | ||||||
|  |   gulp.watch(SIMPLE_LESS, css); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* ----------------------------------------- */ | ||||||
|  | /*  Export Tasks | ||||||
|  | /* ----------------------------------------- */ | ||||||
|  |  | ||||||
|  | exports.default = gulp.series( | ||||||
|  |     gulp.parallel(css), | ||||||
|  |     watchUpdates | ||||||
|  | ); | ||||||
|  | exports.css = css; | ||||||
|  | exports.watchUpdates = watchUpdates; | ||||||
							
								
								
									
										50
									
								
								less/colors.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,50 @@ | |||||||
|  | :root { | ||||||
|  |  | ||||||
|  |   /* =================== 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); | ||||||
|  |     --color-control-border-hover:rgba(255, 128, 0, 0.8); | ||||||
|  |     --color-gold: rgba(191, 149, 63, 0.8); | ||||||
|  |     --gradient-gold: linear-gradient(30deg, rgba(191, 149, 63, 0.3), rgba(252, 246, 186, 0.3), rgba(179, 135, 40, 0.3), rgba(251, 245, 183, 0.3), rgba(170, 119, 28, 0.3)); | ||||||
|  |     --gradient-silver: linear-gradient(30deg, rgba(61, 55, 93, 0.3), rgba(178, 179, 196, 0.3), rgba(59, 62, 63, 0.6), rgba(206, 204, 199, 0.3), rgba(61, 46, 49, 0.3)); | ||||||
|  |     --gradient-green: linear-gradient(30deg, rgba(7, 76, 0, 0.3), rgba(66, 163, 65, 0.2), rgba(184, 226, 163, 0.1), rgba(66, 163, 65, 0.2), rgba(184, 226, 163, 0.3)); | ||||||
|  |     --gradient-red: linear-gradient(150deg, rgba(255, 0, 0, 0.3), rgba(255, 200, 128, 0.05),rgba(255, 200, 128, 0.1), rgba(255,10,0,0.3)); | ||||||
|  |     --gradient-violet: linear-gradient(150deg, rgba(100, 45, 124, 0.6), rgba(216, 157, 192, 0.3), rgba(177, 157, 216, 0.5), rgba(107, 62, 121, 0.3), rgba(100, 45, 124, 0.6)); | ||||||
|  |     --gradient-purple-black: linear-gradient(150deg,  rgba(0, 0, 0, 0.7), rgba(100, 45, 124, 0.4), rgba(82, 17, 131, 0.3),rgba(100, 45, 124, 0.4), rgba(0, 0, 0, 0.7)); | ||||||
|  |     --gradient-silver-light: linear-gradient(30deg, rgba(61, 55, 93, 0.2), rgba(178, 179, 196, 0.1), rgba(59, 62, 63, 0.2), rgba(206, 204, 199, 0.1), rgba(61, 46, 49, 0.2)); | ||||||
|  |     --gradient-daylight: conic-gradient( | ||||||
|  |       from 0deg, | ||||||
|  |       hsla(50, 100%, 80%, 0.7), | ||||||
|  |       hsla(30, 30%, 40%, 0.1) 25%, | ||||||
|  |       hsla(250, 50%, 40%, 0.1) 25%, | ||||||
|  |       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) | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  |     --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%); | ||||||
|  |     --background-tooltip: hsla(60, 12%, 85%, 0.95); | ||||||
|  |     --color-tooltip:hsla(282, 47%, 33%, 0.9); | ||||||
|  |     --color-tooltip-faint:hsla(282, 47%, 66%, 0.5); | ||||||
|  |     --background-error:hsla(16, 100%, 50%, 0.8); | ||||||
|  |     --color-profile-border: hsla(0, 0%, 80%, 0.05); | ||||||
|  |   } | ||||||
							
								
								
									
										84
									
								
								less/fonts.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,84 @@ | |||||||
|  | /* ==================== (A) Fonts ==================== */ | ||||||
|  | @font-face { | ||||||
|  |   font-family: "GoudyAcc"; | ||||||
|  |   src: url('../fonts/goudyacc.ttf') format("truetype"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  |   font-family: "MedievalSharp"; | ||||||
|  |   src: url('../fonts/MedievalSharp.ttf') format("truetype"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  |   font-family: "GrenzeGotisch"; | ||||||
|  |   src: url('../fonts/GrenzeGotisch-Regular.ttf') format("truetype"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  |   font-family: "Fondamento"; | ||||||
|  |   src: url('../fonts/Fondamento.ttf') format("truetype"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  |   font-family: "CaslonAntique"; | ||||||
|  |   src: url('../fonts/CaslonAntique.ttf') format("truetype"); | ||||||
|  | } | ||||||
|  | @font-face { | ||||||
|  |   font-family: 'HeuresDraconiques'; | ||||||
|  |   src: | ||||||
|  |       url('../fonts/heuresdraconiques2.woff') format('woff'), | ||||||
|  |       url('../fonts/heuresdraconiques2.woff2') format('woff2'), | ||||||
|  |       url('../fonts/heuresdraconiques2.ttf') format('truetype'); | ||||||
|  |   font-weight: normal; | ||||||
|  |   font-style: normal; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | :root { | ||||||
|  |   /* =================== 1. ACTOR SHEET FONT STYLES =========== */ | ||||||
|  |     --window-header-title-font-family: CaslonAntique; | ||||||
|  |     --window-header-title-font-size: 1.6rem; | ||||||
|  |     --window-header-title-font-weight: normal; | ||||||
|  |     --window-header-title-color: #f5f5f5; | ||||||
|  |  | ||||||
|  |     --major-button-font-family: CaslonAntique; | ||||||
|  |     --major-button-font-size: 1.4rem; | ||||||
|  |     --major-button-font-weight: normal; | ||||||
|  |     --major-button-color: #dadada; | ||||||
|  |  | ||||||
|  |     --tab-header-font-family: CaslonAntique; | ||||||
|  |     --tab-header-font-size: 1.2rem; | ||||||
|  |     --tab-header-font-weight: 700; | ||||||
|  |     --tab-header-color: #403f3e; | ||||||
|  |     --tab-header-color-active: #4a0404; | ||||||
|  |  | ||||||
|  |     --actor-input-font-family: CaslonAntique; | ||||||
|  |     --actor-input-font-size: 1.2rem; | ||||||
|  |     --actor-input-font-weight: 500; | ||||||
|  |     --actor-input-color: black; | ||||||
|  |  | ||||||
|  |     --actor-label-font-family: CaslonAntique; | ||||||
|  |     --actor-label-font-size: 1.2rem; | ||||||
|  |     --actor-label-font-weight: 700; | ||||||
|  |     --actor-label-color: #464331c4; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Global styles & Font */ | ||||||
|  | .window-app { | ||||||
|  |   font-family: CaslonAntique; | ||||||
|  |   text-align: justify; | ||||||
|  |   font-size: 1rem; | ||||||
|  |   letter-spacing: 1px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Fonts */ | ||||||
|  | .sheet header.sheet-header h1 input, | ||||||
|  | .window-app .window-header, | ||||||
|  | #actors .directory-list, | ||||||
|  | #navigation #scene-list .scene.nav-item { | ||||||
|  |   font-family: "GoudyAcc" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* For title, sidebar character and scene */ | ||||||
|  | .sheet nav.sheet-tabs, | ||||||
|  | .window-app input, | ||||||
|  | .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 */ | ||||||
|  | } | ||||||
							
								
								
									
										2115
									
								
								less/foundryvtt-reve-de-dragon.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										7
									
								
								less/item/monnaie.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | |||||||
|  | // Styles pour la feuille d'objet Monnaie | ||||||
|  | .monnaie-content { | ||||||
|  |  | ||||||
|  |   .item-sheet-common(); | ||||||
|  |   .item-sheet-header(); | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								less/item/munition.less
									
									
									
									
									
										Normal 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
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | |||||||
|  | // Styles pour la feuille d'objet Monnaie | ||||||
|  | .tarot-content { | ||||||
|  |  | ||||||
|  |   .item-sheet-common(); | ||||||
|  |   .item-sheet-header(); | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										108
									
								
								less/sheets.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,108 @@ | |||||||
|  | .item-sheet-common() { | ||||||
|  |   padding: 0px; | ||||||
|  |  | ||||||
|  |   // 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-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; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .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"], | ||||||
|  |     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; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -484,7 +484,7 @@ export class RdDActor extends RdDBaseActorSang { | |||||||
|         await this.$recupererFatigue(message); |         await this.$recupererFatigue(message); | ||||||
|         await this.$jetRecuperationReve(dormi, message); |         await this.$jetRecuperationReve(dormi, message); | ||||||
|         if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) { |         if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) { | ||||||
|           dormi.etat = await this.$jetRecuperationReve(dormi, message); |           await this.$jetRecuperationReve(dormi, message); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -1795,10 +1795,8 @@ export class RdDActor extends RdDBaseActorSang { | |||||||
|     }; |     }; | ||||||
|     RollDataAjustements.calcul(rollData, this); |     RollDataAjustements.calcul(rollData, this); | ||||||
|     await RdDResolutionTable.rollData(rollData); |     await RdDResolutionTable.rollData(rollData); | ||||||
|     await RdDRollResult.displayRollData(rollData, this) |  | ||||||
|  |  | ||||||
|     this.gererExperience(rollData); |     this.gererExperience(rollData); | ||||||
|  |     await RdDRollResult.displayRollData(rollData, this) | ||||||
|     return rollData.rolled; |     return rollData.rolled; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -341,6 +341,9 @@ export class RdDBaseActorReve extends RdDBaseActor { | |||||||
|     const selectedCaracName = ['apparence', 'perception', 'force', 'reve'].find(it => carac[it] != undefined) |     const selectedCaracName = ['apparence', 'perception', 'force', 'reve'].find(it => carac[it] != undefined) | ||||||
|  |  | ||||||
|     await this.openRollDialog({ |     await this.openRollDialog({ | ||||||
|  |       name: 'jet-quelconque', | ||||||
|  |       label: 'Jet', | ||||||
|  |       template: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll.hbs', | ||||||
|       rollData: { |       rollData: { | ||||||
|         alias: this.getAlias(), |         alias: this.getAlias(), | ||||||
|         carac: carac, |         carac: carac, | ||||||
|   | |||||||
| @@ -14,11 +14,12 @@ import { ItemAction } from "../item/item-actions.js"; | |||||||
|  * Extend the basic ActorSheet with some very simple modifications |  * Extend the basic ActorSheet with some very simple modifications | ||||||
|  * @extends {ActorSheet} |  * @extends {ActorSheet} | ||||||
|  */ |  */ | ||||||
| export class RdDBaseActorSheet extends ActorSheet { | export class RdDBaseActorSheet extends foundry.appv1.sheets.ActorSheet { | ||||||
|  |   static _warnedAppV1 = true | ||||||
|  |  | ||||||
|   /** @override */ |   /** @override */ | ||||||
|   static get defaultOptions() { |   static get defaultOptions() { | ||||||
|     return foundry.utils.mergeObject(ActorSheet.defaultOptions, { |     return foundry.utils.mergeObject(foundry.appv1.sheets.ActorSheet.defaultOptions, { | ||||||
|       classes: ["rdd", "sheet", "actor"], |       classes: ["rdd", "sheet", "actor"], | ||||||
|       tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }], |       tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }], | ||||||
|       dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }], |       dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }], | ||||||
|   | |||||||
| @@ -213,6 +213,7 @@ export class RdDBaseActor extends Actor { | |||||||
|   isCreatureEntite() { return this.isCreature() || this.isEntite() } |   isCreatureEntite() { return this.isCreature() || this.isEntite() } | ||||||
|   isCreature() { return false } |   isCreature() { return false } | ||||||
|   isEntite(typeentite = []) { return false } |   isEntite(typeentite = []) { return false } | ||||||
|  |   isHautRevant() { return false } | ||||||
|   isVehicule() { return false } |   isVehicule() { return false } | ||||||
|   isPersonnage() { return false } |   isPersonnage() { return false } | ||||||
|   getItem(id, type = undefined) { |   getItem(id, type = undefined) { | ||||||
| @@ -734,7 +735,7 @@ export class RdDBaseActor extends Actor { | |||||||
|       name: this.getAlias(), |       name: this.getAlias(), | ||||||
|       system: { description: this.system.description } |       system: { description: this.system.description } | ||||||
|     } |     } | ||||||
|     renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData) |     foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData) | ||||||
|       .then(html => ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride))); |       .then(html => ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride))); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,4 @@ | |||||||
| import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js"; |  | ||||||
| import { RdDItem } from "../item.js"; | import { RdDItem } from "../item.js"; | ||||||
| import { RdDUtility } from "../rdd-utility.js"; |  | ||||||
| import { RdDBaseActorSheet } from "./base-actor-sheet.js"; | import { RdDBaseActorSheet } from "./base-actor-sheet.js"; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -44,13 +42,8 @@ export class RdDCommerceSheet extends RdDBaseActorSheet { | |||||||
|   activateListeners(html) { |   activateListeners(html) { | ||||||
|     super.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; |     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 => { |     this.html.find('input.item-quantite').change(async event => { | ||||||
|       const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val())); |       const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val())); | ||||||
|       await this.getItem(event)?.update({ "system.quantite": newQuantite }); |       await this.getItem(event)?.update({ "system.quantite": newQuantite }); | ||||||
| @@ -64,28 +57,4 @@ export class RdDCommerceSheet extends RdDBaseActorSheet { | |||||||
|   getTypesInventaire() { |   getTypesInventaire() { | ||||||
|     return RdDItem.getItemTypesInventaire('all'); |     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() |  | ||||||
|     }); |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,4 +1,6 @@ | |||||||
|  | import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js"; | ||||||
| import { Misc } from "../misc.js"; | import { Misc } from "../misc.js"; | ||||||
|  | import { RdDUtility } from "../rdd-utility.js"; | ||||||
| import { RdDBaseActor } from "./base-actor.js"; | import { RdDBaseActor } from "./base-actor.js"; | ||||||
|  |  | ||||||
| export class RdDCommerce extends RdDBaseActor { | export class RdDCommerce extends RdDBaseActor { | ||||||
| @@ -37,4 +39,27 @@ export class RdDCommerce extends RdDBaseActor { | |||||||
|     const pourcentage = this.system.pourcentage ?? 100; |     const pourcentage = this.system.pourcentage ?? 100; | ||||||
|     return Misc.keepDecimals(Math.ceil(item.system.cout * pourcentage) / 100, 2); |     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() | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |    | ||||||
| } | } | ||||||
| @@ -7,7 +7,7 @@ import { CATEGORIES_COMPETENCES, CATEGORIES_DRACONIC, Mapping } from "./mapping. | |||||||
|  |  | ||||||
| export class RdDActorExportSheet extends RdDActorSheet { | export class RdDActorExportSheet extends RdDActorSheet { | ||||||
|   static init() { |   static init() { | ||||||
|     loadTemplates([ |     foundry.applications.handlebars.loadTemplates([ | ||||||
|       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs", |       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs", | ||||||
|       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessure.hbs", |       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessure.hbs", | ||||||
|       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessures.hbs", |       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessures.hbs", | ||||||
| @@ -21,7 +21,7 @@ export class RdDActorExportSheet extends RdDActorSheet { | |||||||
|       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/protection.hbs", |       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/protection.hbs", | ||||||
|       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs", |       "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs", | ||||||
|     ]) |     ]) | ||||||
|     Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille simplifiée" }) |     foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille simplifiée" }) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   static get defaultOptions() { |   static get defaultOptions() { | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ import { Misc } from "../../misc.js" | |||||||
| import { EXPORT_CSV_SCRIPTARIUM, OptionsAvancees } from "../../settings/options-avancees.js" | import { EXPORT_CSV_SCRIPTARIUM, OptionsAvancees } from "../../settings/options-avancees.js" | ||||||
| import { Mapping } from "./mapping.js" | import { Mapping } from "./mapping.js" | ||||||
|  |  | ||||||
| const IMG_SCRIPTARIUM = '<img class="context-menu-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/scriptarium.svg">' | const IMG_SCRIPTARIUM = '<img class="context-menu-img" src="systems/foundryvtt-reve-de-dragon/assets/ui/scriptarium.svg">' | ||||||
|  |  | ||||||
| export class ExportScriptarium { | export class ExportScriptarium { | ||||||
|  |  | ||||||
| @@ -12,14 +12,18 @@ export class ExportScriptarium { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   constructor() { |   constructor() { | ||||||
|     Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) |     //Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) }) | ||||||
|     Hooks.on("getActorDirectoryEntryContext", (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) { |   onActorDirectoryMenu(actorDirectory, menus) { | ||||||
|  |     // DEBUG console.log("ExportScriptarium.onActorDirectoryMenu", actorDirectory, menus) | ||||||
|     menus.push({ |     menus.push({ | ||||||
|       name: 'Export Personnages <i class="fa-regular fa-file-csv"></i>', |       name: 'Export Personnages', | ||||||
|       icon: IMG_SCRIPTARIUM, |       icon: '<i class="fa-solid fa-download"></i>', //IMG_SCRIPTARIUM, | ||||||
|       condition: (target) => game.user.isGM && |       condition: (target) => game.user.isGM && | ||||||
|         OptionsAvancees.isUsing(EXPORT_CSV_SCRIPTARIUM) && |         OptionsAvancees.isUsing(EXPORT_CSV_SCRIPTARIUM) && | ||||||
|         this.$getActors(actorDirectory, target).length > 0, |         this.$getActors(actorDirectory, target).length > 0, | ||||||
| @@ -28,22 +32,28 @@ export class ExportScriptarium { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   $getTargetName(actorDirectory, target) { |   $getTargetName(actorDirectory, target) { | ||||||
|  |     target = $(target) | ||||||
|     const li = target.closest(".directory-item") |     const li = target.closest(".directory-item") | ||||||
|     const folderId = li.data("folderId") |     const folderId = li.data("folderId") | ||||||
|     const actorId = li.data("documentId") |     const actorId = li.data("entryId") | ||||||
|     return actorId |     return actorId | ||||||
|       ? game.actors.get(actorId).name |       ? 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) { |   $getActors(actorDirectory, target) { | ||||||
|  |     if (actorDirectory.id != "actors") { | ||||||
|  |       return [] | ||||||
|  |     } | ||||||
|  |     // DEBUG console.log("ExportScriptarium.$getActors", actorDirectory, target) | ||||||
|  |     target = $(target) | ||||||
|     const li = target.closest(".directory-item") |     const li = target.closest(".directory-item") | ||||||
|     const folderId = li.data("folderId") |     const folderId = li.data("folderId") | ||||||
|     const actorId = li.data("documentId") |     const actorId = li.data("entryId") | ||||||
|     const actors = actorId |     const actors = actorId | ||||||
|       ? [game.actors.get(actorId)] |       ? [game.actors.get(actorId)] | ||||||
|       : folderId |       : 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) |     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 actorLines = actors.map(actor => Misc.join(this.getActorLine(actor), ';')) | ||||||
|     const data = Misc.join([header, ...actorLines], eol) |     const data = Misc.join([header, ...actorLines], eol) | ||||||
|     const filename = `scriptarium-${targetName?.slugify()}.csv`; |     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() { |   getHeaderLine() { | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ const RANDOM_VALUES = { | |||||||
|  |  | ||||||
| export class AppPersonnageAleatoire extends FormApplication { | export class AppPersonnageAleatoire extends FormApplication { | ||||||
|   static preloadHandlebars() { |   static preloadHandlebars() { | ||||||
|     loadTemplates([ |     foundry.applications.handlebars.loadTemplates([ | ||||||
|       'systems/foundryvtt-reve-de-dragon/templates/actor/random/champ-aleatoire.hbs', |       'systems/foundryvtt-reve-de-dragon/templates/actor/random/champ-aleatoire.hbs', | ||||||
|     ]) |     ]) | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								module/applications/sheets/_module.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | |||||||
|  | export { default as RdDItemBaseSheet} from "./common-item-sheet.mjs" | ||||||
|  | export { default as RdDMonnaieSheet } from "./monnaie-sheet.mjs" | ||||||
|  | export { default as RdDMunitionSheet } from "./munition-sheet.mjs" | ||||||
|  | export { default as RdDTarotSheet } from "./tarot-sheet.mjs" | ||||||
|  |  | ||||||
							
								
								
									
										111
									
								
								module/applications/sheets/common-item-sheet.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,111 @@ | |||||||
|  | const { HandlebarsApplicationMixin } = foundry.applications.api | ||||||
|  | import { SYSTEM_RDD } from "../../constants.js" | ||||||
|  | import { Misc } from "../../misc.js" | ||||||
|  | import { RdDSheetUtility } from "../../rdd-sheet-utility.js"; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | export default class RdDItemBaseSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) { | ||||||
|  |  | ||||||
|  |   static preloadHandlebars(...templatesList) { | ||||||
|  |     const handlebars = ["systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/header.hbs"] | ||||||
|  |     templatesList.forEach(templates => | ||||||
|  |       templates.forEach(t => | ||||||
|  |         t.handlebars().forEach(h => handlebars.push(h)) | ||||||
|  |       ) | ||||||
|  |     ) | ||||||
|  |     loadTemplates(Misc.distinct(handlebars)) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static register(sheetClass) { | ||||||
|  |     const itemType = sheetClass.ITEM_TYPE | ||||||
|  |     Items.registerSheet(SYSTEM_RDD, sheetClass, { | ||||||
|  |       label: Misc.typeName('Item', itemType), | ||||||
|  |       types: [itemType], | ||||||
|  |       makeDefault: true | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static registerAll(...sheetClasses) { | ||||||
|  |     const handlebars = ["systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/header.hbs"] | ||||||
|  |     sheetClasses.forEach(sheetClass => { | ||||||
|  |       sheetClass.TEMPLATES.forEach(t => | ||||||
|  |         t.handlebars().forEach(h => handlebars.push(h)) | ||||||
|  |       ) | ||||||
|  |       const itemType = sheetClass.ITEM_TYPE | ||||||
|  |       foundry.documents.collections.Items.registerSheet(SYSTEM_RDD, sheetClass, { | ||||||
|  |         label: Misc.typeName('Item', itemType), | ||||||
|  |         types: [itemType], | ||||||
|  |         makeDefault: true | ||||||
|  |       }) | ||||||
|  |     }) | ||||||
|  |     foundry.applications.handlebars.loadTemplates(Misc.distinct(handlebars)) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static get ITEM_TYPE() { return undefined } | ||||||
|  |  | ||||||
|  |   constructor(options = {}) { | ||||||
|  |     super(options) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static get TEMPLATES() { return [] } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static DEFAULT_OPTIONS = { | ||||||
|  |     classes: ["fvtt-rdd", "item"], | ||||||
|  |     position: { | ||||||
|  |       width: 448, | ||||||
|  |       height: "auto", | ||||||
|  |     }, | ||||||
|  |     form: { | ||||||
|  |       submitOnChange: true, | ||||||
|  |     }, | ||||||
|  |     window: { | ||||||
|  |       resizable: true, | ||||||
|  |     }, | ||||||
|  |     actions: { | ||||||
|  |       editImage: RdDItemBaseSheet.#onEditImage, | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   async _prepareContext() { | ||||||
|  |     return { | ||||||
|  |       item: this.document, | ||||||
|  |       options: RdDSheetUtility.getOptions(this.document, this.isEditable), | ||||||
|  |       fields: this.document.schema.fields, | ||||||
|  |       systemFields: this.document.system.schema.fields, | ||||||
|  |       system: this.document.system, | ||||||
|  |       source: this.document.toObject(), | ||||||
|  |       isEditable: this.isEditable, | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // #region Actions | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Handle changing a Document's image. | ||||||
|  |    * | ||||||
|  |    * @this RdDItemBaseSheet | ||||||
|  |    * @param {PointerEvent} event   The originating click event | ||||||
|  |    * @param {HTMLElement} target   The capturing HTML element which defined a [data-action] | ||||||
|  |    * @returns {Promise} | ||||||
|  |    * @private | ||||||
|  |    */ | ||||||
|  |   static async #onEditImage(event, target) { | ||||||
|  |     const attr = target.dataset.edit | ||||||
|  |     const current = foundry.utils.getProperty(this.document, attr) | ||||||
|  |     const { img } = this.document.constructor.getDefaultArtwork?.(this.document.toObject()) ?? {} | ||||||
|  |     const fp = new FilePicker({ | ||||||
|  |       current, | ||||||
|  |       type: "image", | ||||||
|  |       redirectToRoot: img ? [img] : [], | ||||||
|  |       callback: (path) => { | ||||||
|  |         this.document.update({ [attr]: path }) | ||||||
|  |       }, | ||||||
|  |       top: this.position.top + 40, | ||||||
|  |       left: this.position.left + 10, | ||||||
|  |     }) | ||||||
|  |     return fp.browse() | ||||||
|  |   } | ||||||
|  |   // #endregion | ||||||
|  | } | ||||||
							
								
								
									
										35
									
								
								module/applications/sheets/monnaie-sheet.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,35 @@ | |||||||
|  | import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../../common/_module.mjs"; | ||||||
|  | import { ITEM_TYPES } from "../../constants.js"; | ||||||
|  | import RdDItemBaseSheet from "./common-item-sheet.mjs"; | ||||||
|  |  | ||||||
|  | export default class RdDMonnaieSheet extends RdDItemBaseSheet { | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static get ITEM_TYPE() { return ITEM_TYPES.monnaie } | ||||||
|  |   static get TEMPLATES() { return [TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE] } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static DEFAULT_OPTIONS = Object.assign({}, | ||||||
|  |     RdDItemBaseSheet.DEFAULT_OPTIONS, | ||||||
|  |     { | ||||||
|  |       classes: ["fvtt-rdd", "item", "monnaie"], | ||||||
|  |       position: { width: 448 }, | ||||||
|  |       window: { contentClasses: ["monnaie-content"] } | ||||||
|  |     }) | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static PARTS = { | ||||||
|  |     main: { | ||||||
|  |       template: "systems/foundryvtt-reve-de-dragon/templates/sheets/item/monnaie.hbs", | ||||||
|  |     }, | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   async _prepareContext() { | ||||||
|  |     return Object.assign( | ||||||
|  |       await super._prepareContext(), | ||||||
|  |       await TEMPLATE_DESCRIPTION.prepareContext(this.document), | ||||||
|  |       await TEMPLATE_INVENTAIRE.prepareContext(this.document) | ||||||
|  |     ) | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										34
									
								
								module/applications/sheets/munition-sheet.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,34 @@ | |||||||
|  | import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../../common/_module.mjs"; | ||||||
|  | import { ITEM_TYPES } from "../../constants.js"; | ||||||
|  | import RdDItemBaseSheet from "./common-item-sheet.mjs"; | ||||||
|  |  | ||||||
|  | export default class RdDMunitionSheet extends RdDItemBaseSheet { | ||||||
|  |   /** @override */ | ||||||
|  |   static get ITEM_TYPE() { return ITEM_TYPES.munition } | ||||||
|  |   static get TEMPLATES() { return [TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE] } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static DEFAULT_OPTIONS = Object.assign({}, | ||||||
|  |     RdDItemBaseSheet.DEFAULT_OPTIONS, | ||||||
|  |     { | ||||||
|  |       classes: ["fvtt-rdd", "item", "munition"], | ||||||
|  |       position: { width: 448 }, | ||||||
|  |       window: { contentClasses: ["munition-content"] } | ||||||
|  |     }) | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static PARTS = { | ||||||
|  |     main: { | ||||||
|  |       template: "systems/foundryvtt-reve-de-dragon/templates/sheets/item/munition.hbs", | ||||||
|  |     }, | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   async _prepareContext() { | ||||||
|  |     return Object.assign( | ||||||
|  |       await super._prepareContext(), | ||||||
|  |       await TEMPLATE_DESCRIPTION.prepareContext(this.document), | ||||||
|  |       await TEMPLATE_INVENTAIRE.prepareContext(this.document) | ||||||
|  |     ) | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										33
									
								
								module/applications/sheets/tarot-sheet.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,33 @@ | |||||||
|  | import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../../common/_module.mjs"; | ||||||
|  | import { ITEM_TYPES } from "../../constants.js"; | ||||||
|  | import RdDItemBaseSheet from "./common-item-sheet.mjs"; | ||||||
|  |  | ||||||
|  | export default class RdDTarotSheet extends RdDItemBaseSheet { | ||||||
|  |   /** @override */ | ||||||
|  |   static get ITEM_TYPE() { return ITEM_TYPES.tarot } | ||||||
|  |   static get TEMPLATES() { return [TEMPLATE_DESCRIPTION] } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static DEFAULT_OPTIONS = Object.assign({}, | ||||||
|  |     RdDItemBaseSheet.DEFAULT_OPTIONS, | ||||||
|  |     { | ||||||
|  |       classes: ["fvtt-rdd", "item", "tarot"], | ||||||
|  |       position: { width: 448 }, | ||||||
|  |       window: { contentClasses: ["tarot-content"] } | ||||||
|  |     }) | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   static PARTS = { | ||||||
|  |     main: { | ||||||
|  |       template: "systems/foundryvtt-reve-de-dragon/templates/sheets/item/tarot.hbs", | ||||||
|  |     }, | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** @override */ | ||||||
|  |   async _prepareContext() { | ||||||
|  |     return Object.assign( | ||||||
|  |       await super._prepareContext(), | ||||||
|  |       await TEMPLATE_DESCRIPTION.prepareContext(this.document) | ||||||
|  |     ) | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -13,7 +13,7 @@ const TEXT_ROLL_MANAGERS = [ | |||||||
|  |  | ||||||
| export class RdDTextEditor { | export class RdDTextEditor { | ||||||
|   static registerChatCallbacks(html) { |   static registerChatCallbacks(html) { | ||||||
|     html.on("click", '.roll-text', async event => await RdDTextEditor.rollText(event)) |     $(html).on("click", '.roll-text', async event => await RdDTextEditor.rollText(event)) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   static async enrichHTML(text, object, options = {showlink:true}) { |   static async enrichHTML(text, object, options = {showlink:true}) { | ||||||
| @@ -30,7 +30,7 @@ export class RdDTextEditor { | |||||||
|       context.text = await manager.onReplaceRoll(context); |       context.text = await manager.onReplaceRoll(context); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return await TextEditor.enrichHTML(context.text, { |     return await foundry.applications.ux.TextEditor.implementation.enrichHTML(context.text, { | ||||||
|       relativeTo: object, |       relativeTo: object, | ||||||
|       secrets: object?.isOwner, |       secrets: object?.isOwner, | ||||||
|       async: true |       async: true | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; | |||||||
| export class ChatUtility { | export class ChatUtility { | ||||||
|  |  | ||||||
|   static async init() { |   static async init() { | ||||||
|     Hooks.on("renderChatMessage", async (app, html, msg) => await ChatUtility.onRenderChatMessage(app, html, msg)) |     Hooks.on("renderChatMessageHTML", async (app, html, msg) => await ChatUtility.onRenderChatMessage(app, html, msg)) | ||||||
|     Hooks.on("createChatMessage", async (chatMessage, options, id) => await ChatUtility.onCreateChatMessage(chatMessage, options, id)) |     Hooks.on("createChatMessage", async (chatMessage, options, id) => await ChatUtility.onCreateChatMessage(chatMessage, options, id)) | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -190,8 +190,8 @@ export class ChatUtility { | |||||||
|     if (rddTimestamp) { |     if (rddTimestamp) { | ||||||
|       const timestamp = new RdDTimestamp(rddTimestamp); |       const timestamp = new RdDTimestamp(rddTimestamp); | ||||||
|       const timestampData = timestamp.toCalendrier(); |       const timestampData = timestamp.toCalendrier(); | ||||||
|       const dateHeure = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/common/date-heure.hbs', timestampData); |       const dateHeure = await foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/common/date-heure.hbs', timestampData); | ||||||
|       html.find('header.message-header .message-sender').after(dateHeure) |       $(html).find('header.message-header .message-sender').after(dateHeure) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,13 +5,13 @@ const INFO_COEUR = 'info-coeur'; | |||||||
|  |  | ||||||
| export class RdDCoeur { | export class RdDCoeur { | ||||||
|   static registerChatCallbacks(html) { |   static registerChatCallbacks(html) { | ||||||
|     html.on("click", 'a.accepter-tendre-moment', event => { |     $(html).on("click", 'a.accepter-tendre-moment', event => { | ||||||
|       RdDCoeur.accepterTendreMoment(RdDCoeur.extractInfoCoeur(event)) |       RdDCoeur.accepterTendreMoment(RdDCoeur.extractInfoCoeur(event)) | ||||||
|     }) |     }) | ||||||
|     html.on("click", 'a.refuser-tendre-moment', event => { |     $(html).on("click", 'a.refuser-tendre-moment', event => { | ||||||
|       RdDCoeur.refuserTendreMoment(RdDCoeur.extractInfoCoeur(event)) |       RdDCoeur.refuserTendreMoment(RdDCoeur.extractInfoCoeur(event)) | ||||||
|     }) |     }) | ||||||
|     html.on("click", 'a.perdre-point-coeur-douceur', event => { |     $(html).on("click", 'a.perdre-point-coeur-douceur', event => { | ||||||
|       RdDCoeur.perdreEnDouceur( |       RdDCoeur.perdreEnDouceur( | ||||||
|         RdDCoeur.extractInfoCoeur(event), |         RdDCoeur.extractInfoCoeur(event), | ||||||
|         event.currentTarget.attributes['data-actor-id'].value) |         event.currentTarget.attributes['data-actor-id'].value) | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								module/common/_module.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | import { CommonDescription } from "./description.mjs"; | ||||||
|  | import { CommonInventaire } from "./inventaire.mjs"; | ||||||
|  |  | ||||||
|  | export const TEMPLATE_DESCRIPTION = new CommonDescription() | ||||||
|  | export const TEMPLATE_INVENTAIRE = new CommonInventaire() | ||||||
|  |  | ||||||
|  | export const ALL_COMMON_TEMPLATES = [TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE] | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								module/common/common-template.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,10 @@ | |||||||
|  | /** | ||||||
|  |  * class describing common methods implemented by template parts, | ||||||
|  |  * used for sheet/models/documents | ||||||
|  |  */ | ||||||
|  | export default class CommonTemplate { | ||||||
|  |   fields() { } | ||||||
|  |   handlebars() { return [] } | ||||||
|  |   actions() { return {} } | ||||||
|  |   async prepareContext(item) { } | ||||||
|  | } | ||||||
							
								
								
									
										32
									
								
								module/common/description.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,32 @@ | |||||||
|  | import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js" | ||||||
|  | import CommonTemplate from "./common-template.mjs" | ||||||
|  | import { HTMLSTRING } from "./field-types.mjs" | ||||||
|  |  | ||||||
|  | const fields = foundry.data.fields | ||||||
|  |  | ||||||
|  | export class CommonDescription extends CommonTemplate { | ||||||
|  |   fields() { | ||||||
|  |     return { | ||||||
|  |       description: new fields.HTMLField({ ...HTMLSTRING }), | ||||||
|  |       descriptionmj: new fields.HTMLField({ gmOnly: true, ...HTMLSTRING }) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   handlebars() { | ||||||
|  |     return [ | ||||||
|  |       "systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/template-description.hbs", | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  |   actions() { | ||||||
|  |     return {} | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async prepareContext(item) { | ||||||
|  |     const enriched = { | ||||||
|  |       description: await RdDTextEditor.enrichHTML(item.system.description, item), | ||||||
|  |       descriptionmj: await RdDTextEditor.enrichHTML(item.system.descriptionmj, item), | ||||||
|  |     } | ||||||
|  |     return { enriched } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								module/common/field-types.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,9 @@ | |||||||
|  | export const INTEGER = { required: true, nullable: false, min: 0, integer: true } | ||||||
|  | export const DECIMAL = { required: true, nullable: false, min: 0, integer: false } /* TODO: validation de nombre décimales?*/ | ||||||
|  | export const INTEGER_SIGNED = { required: true, nullable: false, integer: true } | ||||||
|  | export const DECIMAL_SIGNED = { required: true, nullable: false, integer: false } | ||||||
|  | export const STRING = { required: true, nullable: false, blank: true, trim: true } | ||||||
|  | export const HTMLSTRING = { initial: "", required: true, nullable: false, blank: true, textSearch: true } | ||||||
|  |  | ||||||
|  | export const MODEL_ARRAY = { initial: [], required: true, nullable: false } | ||||||
|  |  | ||||||
							
								
								
									
										36
									
								
								module/common/inventaire.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,36 @@ | |||||||
|  | import CommonTemplate from "./common-template.mjs" | ||||||
|  | import { RARETES } from "../item/raretes.js" | ||||||
|  | import { DECIMAL, INTEGER, INTEGER_SIGNED, MODEL_ARRAY, STRING } from "./field-types.mjs" | ||||||
|  |  | ||||||
|  | const fields = foundry.data.fields | ||||||
|  |  | ||||||
|  | export class CommonInventaire extends CommonTemplate { | ||||||
|  |   fields() { | ||||||
|  |     return { | ||||||
|  |       encombrement: new fields.NumberField({ label: "Encombrement", initial: 0, ...INTEGER }), | ||||||
|  |       quantite: new fields.NumberField({ label: "Quantité", initial: 1, ...INTEGER }), | ||||||
|  |       qualite: new fields.NumberField({ label: "Qualité", initial: 0, ...INTEGER_SIGNED }), | ||||||
|  |       cout: new fields.NumberField({ label: "Coût", initial: 0.0, ...DECIMAL }), | ||||||
|  |       environnement: new fields.ArrayField( | ||||||
|  |         new fields.SchemaField({ | ||||||
|  |           milieu: new fields.StringField({ label: "Milieu", initial: "", ...STRING }), | ||||||
|  |           rarete: new fields.StringField({ | ||||||
|  |             label: "Rareté", initial: RARETES[0].code, ...STRING, | ||||||
|  |             validate: (value, options) => RARETES.find(it => it.code == value) | ||||||
|  |           }), | ||||||
|  |           frequence: new fields.NumberField({ label: "Fréquence", initial: RARETES[0].frequence, ...INTEGER }), | ||||||
|  |         }), | ||||||
|  |         { label: "Environnement", ...MODEL_ARRAY }), | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   handlebars() { | ||||||
|  |     return [ | ||||||
|  |       "systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/template-inventaire.hbs" | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async prepareContext(item) { | ||||||
|  |     return {} | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								module/documents/_module.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | export { default as RdDModelMonnaie } from "./monnaie.mjs" | ||||||
|  | export { default as RdDModelMunition } from "./munition.mjs" | ||||||
|  | export { default as RdDModelTarot } from "./tarot.mjs" | ||||||
							
								
								
									
										11
									
								
								module/documents/monnaie.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,11 @@ | |||||||
|  | import { RdDItem } from "../item.js"; | ||||||
|  |  | ||||||
|  | export default class RdDItemMonnaie extends RdDItem { | ||||||
|  |  | ||||||
|  |   constructor(data, context) { | ||||||
|  |     if (!data.img) { | ||||||
|  |       data.img = 'systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp' | ||||||
|  |     } | ||||||
|  |     super(data, context); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								module/documents/munition.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | |||||||
|  | import { RdDItem } from "../item.js"; | ||||||
|  |  | ||||||
|  | export default class RdDItemMunition extends RdDItem { | ||||||
|  |   static get defaultIcon() { | ||||||
|  |     return 'systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp' | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								module/documents/tarot.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | |||||||
|  | import { RdDItem } from "../item.js"; | ||||||
|  |  | ||||||
|  | export default class RdDItemTarot extends RdDItem { | ||||||
|  |   static get defaultIcon() { | ||||||
|  |     return 'systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp' | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -4,8 +4,7 @@ import { Misc } from "../misc.js" | |||||||
|  |  | ||||||
| export const ACTION_ITEM_ENCHANTER =  { | export const ACTION_ITEM_ENCHANTER =  { | ||||||
|   code: 'item-enchanter', label: 'Enchanter', icon: it => 'fa-solid fa-sparkles', |   code: 'item-enchanter', label: 'Enchanter', icon: it => 'fa-solid fa-sparkles', | ||||||
|   filter: it => game.user.isGM || DialogEnchanter.isEnchantable(it), |   filter: it => game.user.isGM || DialogEnchanter.isEnchantable(it) && it.parent?.type != ACTOR_TYPES.commerce, | ||||||
|   optionsFilter: options => options.editable, |  | ||||||
|   action: (item, actor) => DialogEnchanter.enchanter(item) |   action: (item, actor) => DialogEnchanter.enchanter(item) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,12 +14,11 @@ import { RdDItem } from "./item.js"; | |||||||
| import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js"; | import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js"; | ||||||
| import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; | import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; | ||||||
| import { ItemAction } from "./item/item-actions.js"; | import { ItemAction } from "./item/item-actions.js"; | ||||||
| import { RdDItemGemme } from "./item/gemme.js"; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Extend the basic ItemSheet for RdD specific items |  * Extend the basic ItemSheet for RdD specific items | ||||||
|  */ |  */ | ||||||
| export class RdDItemSheet extends ItemSheet { | export class RdDItemSheetV1 extends foundry.appv1.sheets.ItemSheet { | ||||||
|  |  | ||||||
|   static get ITEM_TYPE() { |   static get ITEM_TYPE() { | ||||||
|     return undefined |     return undefined | ||||||
| @@ -32,7 +31,7 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   static register(sheetClass) { |   static register(sheetClass) { | ||||||
|     Items.registerSheet(SYSTEM_RDD, sheetClass, { |     foundry.documents.collections.Items.registerSheet(SYSTEM_RDD, sheetClass, { | ||||||
|       label: Misc.typeName('Item', sheetClass.ITEM_TYPE), |       label: Misc.typeName('Item', sheetClass.ITEM_TYPE), | ||||||
|       types: [sheetClass.ITEM_TYPE], |       types: [sheetClass.ITEM_TYPE], | ||||||
|       makeDefault: true |       makeDefault: true | ||||||
| @@ -43,7 +42,7 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|   static get defaultOptions() { |   static get defaultOptions() { | ||||||
|     return foundry.utils.mergeObject(super.defaultOptions, { |     return foundry.utils.mergeObject(super.defaultOptions, { | ||||||
|       classes: [SYSTEM_RDD, "sheet", "item"], |       classes: [SYSTEM_RDD, "sheet", "item"], | ||||||
|       template: RdDItemSheet.defaultTemplate(RdDItemSheet.ITEM_TYPE), |       template: RdDItemSheetV1.defaultTemplate(RdDItemSheetV1.ITEM_TYPE), | ||||||
|       width: 550, |       width: 550, | ||||||
|       height: 550 |       height: 550 | ||||||
|     }, { inplace: false }); |     }, { inplace: false }); | ||||||
| @@ -51,7 +50,7 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   get template() { |   get template() { | ||||||
|     return RdDItemSheet.defaultTemplate(this.item.type); |     return RdDItemSheetV1.defaultTemplate(this.item.type); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   get title() { |   get title() { | ||||||
| @@ -101,7 +100,7 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|       description: await RdDTextEditor.enrichHTML(this.item.system.description, this.item), |       description: await RdDTextEditor.enrichHTML(this.item.system.description, this.item), | ||||||
|       descriptionmj: await RdDTextEditor.enrichHTML(this.item.system.descriptionmj, this.item), |       descriptionmj: await RdDTextEditor.enrichHTML(this.item.system.descriptionmj, this.item), | ||||||
|       isComestible: this.item.getUtilisationCuisine(), |       isComestible: this.item.getUtilisationCuisine(), | ||||||
|       options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable), |       options: RdDSheetUtility.mergeDocumentRights({}, this.item, this.isEditable), | ||||||
|       competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage), |       competences: await SystemCompendiums.getCompetences(ACTOR_TYPES.personnage), | ||||||
|       categories: RdDItem.getCategories(this.item.type), |       categories: RdDItem.getCategories(this.item.type), | ||||||
|     } |     } | ||||||
| @@ -264,7 +263,7 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|   _updateObject(event, formData) { |   _updateObject(event, formData) { | ||||||
|     switch (this.item.type) { |     switch (this.item.type) { | ||||||
|       case ITEM_TYPES.sort: |       case ITEM_TYPES.sort: | ||||||
|         formData['system.bonuscase'] = RdDItemSort.bonuscasesToString(RdDItemSheet._listCaseTmr( |         formData['system.bonuscase'] = RdDItemSort.bonuscasesToString(RdDItemSheetV1._listCaseTmr( | ||||||
|           formData.caseTmrCoord, |           formData.caseTmrCoord, | ||||||
|           formData.caseTmrBonus, |           formData.caseTmrBonus, | ||||||
|           formData.caseTmrAdd |           formData.caseTmrAdd | ||||||
| @@ -314,7 +313,7 @@ export class RdDItemSheet extends ItemSheet { | |||||||
|  |  | ||||||
|   async _onDrop(event) { |   async _onDrop(event) { | ||||||
|     // Try to extract the dragData |     // Try to extract the dragData | ||||||
|     let dragData = RdDItemSheet.$extractDragData(event); |     let dragData = RdDItemSheetV1.$extractDragData(event); | ||||||
|     if (!dragData) return false; |     if (!dragData) return false; | ||||||
|     const allowed = Hooks.call("dropActorSheetData", this.actor, this, dragData); |     const allowed = Hooks.call("dropActorSheetData", this.actor, this, dragData); | ||||||
|     if (allowed === false) return false; |     if (allowed === false) return false; | ||||||
|   | |||||||
| @@ -78,6 +78,8 @@ export const defaultItemImg = { | |||||||
|   souffle: "systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp", |   souffle: "systems/foundryvtt-reve-de-dragon/icons/souffle_dragon.webp", | ||||||
|   tarot: "systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp", |   tarot: "systems/foundryvtt-reve-de-dragon/icons/tarots/dos-tarot.webp", | ||||||
|   tete: "systems/foundryvtt-reve-de-dragon/icons/tete_dragon.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" | ||||||
| } | } | ||||||
|  |  | ||||||
| /* -------------------------------------------- */ | /* -------------------------------------------- */ | ||||||
|   | |||||||