Compare commits

...

175 Commits

Author SHA1 Message Date
33b676e214 Merge branch 'master' into 'v1.3'
# Conflicts:
#   module/actor.js
#   module/rdd-combat.js
#   module/rdd-resolution-table.js
#   module/rdd-roll.js
#   system.json
#   templates/chat-resultat-parade.html
2021-02-27 22:06:27 +00:00
8ddd47844f Merge branch 'v1.3' of gitlab.com:LeRatierBretonnien/foundryvtt-reve-de-dragon into v1.3 2021-02-27 23:02:52 +01:00
bcbd4ab58c Fix initiative 2021-02-27 22:59:10 +01:00
89d66c1347 #164 : une seule fenêtre de jet autorisée 2021-02-26 23:54:17 +01:00
d3388d13cf Merge branch 'texte-ambiance' into 'v1.3'
handlebar partiel pour texte d'ambiance

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!157
2021-02-26 20:31:07 +00:00
adecbef178 handlebar partiel pour texte d'ambiance 2021-02-26 20:46:46 +01:00
74a7b2c0ad Merge branch 'typos' into 'v1.3'
Typos

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!156
2021-02-26 07:42:42 +00:00
622aeda279 Fix tête présent des cités
doublon + typo empêchait d'automatiser la création des présents

fix tables des têtes inversée et icône dans les tables
2021-02-26 01:15:08 +01:00
28fde31a54 Fix typos 2021-02-26 00:59:12 +01:00
184f8a30d2 Merge branch 'v1.3' of gitlab.com:LeRatierBretonnien/foundryvtt-reve-de-dragon into v1.3 2021-02-25 08:48:36 +01:00
741d724d93 Fix increment d'utilisation 2021-02-25 08:48:31 +01:00
eab8cb7c15 Merge branch 'nombreux-fixes' into 'v1.3'
Nombreux fixes

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!155
2021-02-25 07:35:35 +00:00
c5f4a0a14d Init des armes à distance sans résistance
Workaround: si une arme a une portée, elle peut être utilisée.
2021-02-25 02:15:35 +01:00
0aaa449164 Initiative dans RdDCombatManager
fonction _patch_initiative remplacée par surcharge de la
méthode Combat.rollInitiative
2021-02-25 02:15:35 +01:00
7f0e58b216 déplacement du helper Handlebars
Tous les helpers sont déclarés dans RdDUtility
2021-02-25 02:15:35 +01:00
da56316e42 Typo: maladresse au lieu d'échec total
Lors d'un échec total, on tire une maladresse, pas un échec total
2021-02-25 02:15:35 +01:00
55d11695f7 Fix: significative sur diff -11
Les significatives sur difficulté -16 à -11 faisaient l'échec total
spécifique à ces difficultés
2021-02-25 02:15:35 +01:00
9b362aa265 Fix: typo pière -> piètre 2021-02-25 02:15:35 +01:00
15144697e1 Fix: passage round suivant 2021-02-25 02:15:35 +01:00
382ea2c485 Ajout de helper "accord"
pour accorder selon le genre
2021-02-25 02:15:35 +01:00
eaeb164627 Niveau d'archétype > +11
Le comptage des niveaux d'archétype n'empêche plus d'ouvrir la feuille
d'un personnage avec un niveau d'archétype au dessus de +11
2021-02-25 02:15:35 +01:00
027f6008bf Merge branch 'utilitaire' into 'v1.3'
Ajout de véhicule "posé par terre"

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!154
2021-02-23 19:05:21 +00:00
448a7b806e Ajout de véhicule "posé par terre" 2021-02-23 19:55:51 +01:00
4607a331cc #160 Afficher les totaux d'archetypes 2021-02-22 21:18:46 +01:00
05a41f6ac5 Merge branch 'v1.3' of gitlab.com:LeRatierBretonnien/foundryvtt-reve-de-dragon into v1.3 2021-02-22 21:15:27 +01:00
1d96374b31 #160 Afficher les totaux d'archetypes 2021-02-22 21:15:10 +01:00
56090aadcc Merge branch 'tmrs' into 'v1.3'
Tooltips par dessus les icônes

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!153
2021-02-22 09:57:04 +00:00
11479556dc Tooltips par dessus les icônes
Le zIndex des tooltips n'était pas positionné
2021-02-21 23:48:20 +01:00
e5738aaca3 #161 Amenagement sur beaute 2021-02-21 22:24:39 +01:00
1f61c955b7 #159 Affiche d'informations sur l'init 2021-02-17 15:16:56 +01:00
155990610a #158 : Gestion de l'armure sur la fenêtre d'encaissement 2021-02-17 14:52:50 +01:00
1cdadbd9d6 Gestion auto de l'état sonné en combat 2021-02-17 11:16:27 +01:00
98c6133938 Fix danses 2021-02-14 18:31:00 +01:00
5e53dc5262 Pas mal de bugfixes 2021-02-14 09:31:52 +01:00
d837c25468 Fix lancer sort 2021-02-13 08:53:53 +01:00
38994e849b Fix lancer sort 2021-02-12 23:06:31 +01:00
5e95916c66 Merge branch 'feature/UIappelAuMoral' into 'v1.3'
Feature/u iappel au moral

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!152
2021-02-12 21:53:50 +00:00
1f8608c902 :wqMerge branch 'v1.3' into feature/UIappelAuMoral 2021-02-12 22:41:04 +01:00
5a7dc1d437 UI pour l'appel au moral 2021-02-12 22:36:42 +01:00
1ea940a975 Merge branch 'tmrs' into 'v1.3'
Gestion de queues, souffles, têtes

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!151
2021-02-12 19:57:51 +00:00
6708e3eb71 Fix suppression pelerinage/fermeture-cites
et suppression du pèlerinage lorsqu'on est arrivé
2021-02-12 19:29:29 +01:00
4f35b28aa1 pelerinage
+ suppression des cases quand le souffle/queue sont supprimés
2021-02-12 19:00:28 +01:00
b469461cf6 Ajout de zIndex pour afficher le demi-rêve devant 2021-02-12 15:01:10 +01:00
d700fc7b6c Gestion des présents des cités
* fix present des cités passeur/messager
* suppression des tokens de conquête
2021-02-12 13:05:09 +01:00
99ed077da8 Gestion des présents des cités
+ fix bug sur conquête cité (pour supprimer la casetmr)
+ svg couleur plus lisibles
2021-02-12 12:51:04 +01:00
1c5d14a1fa Merge branch 'queues-souffles' into 'v1.3'
Queues souffles

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!150
2021-02-12 09:44:01 +00:00
5328d2b690 Gestion queues/souffles
- débordement
- conquête
2021-02-12 01:45:25 +01:00
42bd63c999 simplifications sur EffetsDraconiques
ajout de methode tmrLabel pour les tooltips

ajout de l'item en paramètre aux ajouts/suppressions
ajout d'un 'sourceId' pour les casetmr liées à un souffle/queue/tête
2021-02-12 01:45:25 +01:00
1cb4a7dbf5 Small cleanup
- extrait de méthode pour tirage dans un array
- utilisation des operateur ?: / ??
2021-02-12 01:45:25 +01:00
9f2e17537d Round fixes 2021-02-11 23:59:38 +01:00
5fab913b77 Merge branch 'feature/appelAuMoral' into 'v1.3'
Feature/appel au moral

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!148
2021-02-11 22:53:24 +00:00
aab7dc1020 Fix merge v1.3 dans appel au moral 2021-02-11 20:44:50 +01:00
cf36bb9f9d Merge v1.3 dans appel au moral 2021-02-11 20:42:11 +01:00
5ff3859974 Ajout de commentaire et suppression des logs 2021-02-11 20:31:04 +01:00
16a01ea48a Merge branch 'tmrs' into 'v1.3'
Améliorations des TMRs

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!147
2021-02-11 06:16:34 +00:00
b226e5c09a Améliorations des tmr
* fermeture des cités
* utilisations d'icônes pour les cases spéciales, rencontres, sorts
en réserve
* séparation pixi/actions TMR / définition des cases spéciales

fixes divers:
* #153 lancer de sort si draconic utilise compétence autre que rêve
* #152: table de résolution doublée sur cht points de rêve
* /table n'affichait plus les résultats suite à chgt sur souffles/queues
2021-02-11 02:48:27 +01:00
d25e25e6fd #91 - Generateur basique de noms 2021-02-10 15:25:14 +01:00
65c4dfac22 #87 : Règles initiatives - rappel sur charge et feinte 2021-02-10 11:42:43 +01:00
6675539c59 #140 Permettre des jets de carac dérivées 2021-02-10 11:24:14 +01:00
771622564a Checkbox et regles d'appel au moral 2021-02-09 23:23:40 +01:00
cddc6a8e9b #157 Warning sur force insuffisante 2021-02-09 11:17:17 +01:00
62ad72338a #154 - COmptage des utilisations 2021-02-09 09:18:52 +01:00
c31306f154 #156 Drag&Drop de compétences/armes/acteur/journal 2021-02-08 22:51:31 +01:00
375d452e7e Modifier la loc pour les créatures 2021-02-08 16:14:43 +01:00
54a937c620 #151 : permission de supprimer une rencontre depuis la fiche de PJ 2021-02-08 14:15:18 +01:00
43218dd282 #149 Gestion des ombres pour Thanatos 2021-02-07 20:36:34 +01:00
c9ae8580ce Merge branch 'messages-reve' into 'v1.3'
Messages rêve de Dragon

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!146
2021-02-07 08:03:30 +00:00
4d775c97f6 Fix carac Action physiques 2021-02-07 00:02:48 +01:00
ae3766f99b Rêve de Dragon 2021-02-07 00:02:48 +01:00
2af358b924 Amélioration message dormir une heure 2021-02-07 00:02:48 +01:00
863fc65844 Message pour maîtrise Fleuve de l'Oubli 2021-02-07 00:02:48 +01:00
4b88efa999 #150 : Gestion du cas Thanatos 2021-02-06 23:51:04 +01:00
5cd60ca76a Ajout init premier round dans le compendium 2021-02-06 22:49:51 +01:00
6397ba2406 Renommage dexterit 2021-02-06 22:34:27 +01:00
31d1471fdc Merge branch 'oeuvres' into 'v1.3'
Oeuvres

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!145
2021-02-06 10:12:47 +00:00
aa1c93ce22 Preparation maîtrise fleuve 2021-02-06 02:29:58 +01:00
0e037b0c34 Correction texte enchantement 2021-02-06 02:04:33 +01:00
cfef9a559d simplification ajust. écaille 2021-02-06 01:36:46 +01:00
fe73e5b984 Travail sur queues/souffles 2021-02-06 01:36:46 +01:00
7c54597a20 Ajout des Oeuvres génériques
Ajout de la description au tchat, ajout de la référence/auteur
à tous les types d'oeuvres

Ajout de l'exotisme à la cuisine

Jet de chant (qui ne marchait pas)
2021-02-06 01:36:46 +01:00
a2ec26c4c0 Extraction méthodes identification items
Pour savoir si certaines queues/souffles sont là et rendre
le code plus lisible
2021-02-06 01:36:46 +01:00
48688fc453 Merge branch 'travail-cases-humides' into 'v1.3'
Fixes nombreux sur tmr autour des cases humides

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!144
2021-02-05 22:10:50 +00:00
9fd7db2ccf Fixes nombreux sur tmr
- rencontre sur case humide ne causait pas de maîtrise
- détermination de la liste des tmrs par type à l'init (classify)
- tirages aléatoire par type de tmr dans les commandes
- amélioration de messages (nom de case)
- fix expérience case humide
- correction gestion des débordement
- montées très laborieuses multiples
- renommages et extraits méthodes
- distinction de pos (x, y) vs coord (A1)
2021-02-05 19:37:06 +01:00
d53077d862 Ajout mule 2021-02-05 19:37:06 +01:00
3d3bc7dc70 Ne plus afficher les tirages automatiques
Les tirages automatiques sont intégrés dans les messages
2021-02-05 19:37:06 +01:00
0c7a0e413d #87 Initiative premier round 2021-02-05 09:36:42 +01:00
ae03fabd9e #87 - Init du premier round 2021-02-04 16:35:22 +01:00
b2dab45646 #87 : Bouton de +1/-1 pour l'init, via menu ou HUD 2021-02-04 13:30:54 +01:00
4bc47f0c5e Merge branch 'fix-divers' into 'v1.3'
Fix divers

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!143
2021-02-04 07:27:47 +00:00
9d219c5d2b Fix rencontre RdD
pas de méthode async pour construire les messages dans
une operation arrow
2021-02-04 01:35:16 +01:00
fc2420bfe1 Tirage des queues privé
utilisation de rollMode: "gmroll"
2021-02-04 01:21:29 +01:00
1c22f6858f Fix: les armes normales font aussi des dégâts
l'introduction des armes magiques avait mis toutes les autres armes à 0
2021-02-04 01:07:17 +01:00
b194491f6b Fix capacité des contenants (merge)
L'encombrement du contenant n'est plus pris sur sa capacité
2021-02-04 01:06:51 +01:00
781b6353a8 Fix: recalcul nombre astral pour retour arrière
quand on remet la date en arrière (suite à erreur sur l'avancement
du calendrier), le nombre astral est maintenant correctement
initialisé (nombres aléatoires)

Ce qui permet de ne plus tomber sur le cas "N/A" ou sur un nombre
non disponible, et donc débloque la fenêtre de jets de dés
(bloquée à cause de l'ajustement astrologique)
2021-02-04 01:04:26 +01:00
e936fc3234 Fix XP sort 2021-02-03 23:30:20 +01:00
5a2176fef8 Fix XP sort 2021-02-03 23:27:55 +01:00
d316fa1661 Fix contenu 2021-02-03 21:37:16 +01:00
2fd2de29ad Merge branch 'rencontres' into 'v1.3'
Rencontres

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!142
2021-02-03 19:58:11 +00:00
7318b779ec fix ChatMessage des queues/tetes/souffles 2021-02-03 20:47:39 +01:00
1632a4890b Don de double rêve 2021-02-03 20:47:39 +01:00
66dff68daf Amélioration rencontre TMR
- mise en forme des messages
- Ajout de messages poétiques
- regroupement par rencontre de la gestion et des messages
- séparation table de proba/type de rencontre
- quelques fixes lors de tests (mes régressions?)
- lors d'un déplacement avec un tourbillon, on n'a pas à vaincre les
cases humides
- pas de rencontre après un déplacement par une rencontre
2021-02-03 20:47:39 +01:00
df996695e4 #136 Maladies 2021-02-03 17:41:27 +01:00
74c5f4aad6 Fix dommages dans maladies/poisons 2021-02-03 17:01:53 +01:00
82cd2c547f Merge branch 'add-poison' into 'v1.3'
Ajout poison

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!141
2021-02-02 21:35:40 +00:00
26a72c4a12 Ajout poison 2021-02-02 22:05:38 +01:00
f8206d0a43 Merge branch 'v1.3' of gitlab.com:LeRatierBretonnien/foundryvtt-reve-de-dragon into v1.3 2021-02-02 21:13:17 +01:00
2e8b66781f Fix compendium 2021-02-02 21:13:11 +01:00
f3341ee2f0 Merge branch 'mineurs-v1.3' into 'v1.3'
Mineurs v1.3

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!140
2021-02-02 20:12:45 +00:00
1875530b1c Rework arts 2021-02-02 20:24:08 +01:00
d612b74675 Amélioration fatigue/mort
méthodes plus facile pour utilisation hors de l'actor
2021-02-02 20:06:02 +01:00
ee3de585a6 Alignement ligne en-tête
Dans les équipements, alignement de la ligne d'en tête sur
les valeurs indiquées, pour mieux comprendre les options
équiper/éditer/supprimer (maintenant bien alignées)
2021-02-02 19:57:09 +01:00
b0bb369e33 Petits fixes 2021-02-02 19:57:09 +01:00
c9fe0ed85d Taille des images dans les messages 2021-02-02 19:57:09 +01:00
bd78b80c24 Ameliorations lancer de sort 2021-02-02 08:20:42 +01:00
fed92b9be3 Ameliorations lancer de sort 2021-02-02 08:08:41 +01:00
4e529e5e0d Ameliorations lancer de sort 2021-02-02 08:08:27 +01:00
d24b9c07fa Ameliorations lancer de sort 2021-02-02 07:56:45 +01:00
be796a7169 Rework equipement 2021-01-29 23:49:29 +01:00
6b0154ea9d Rework equipement 2021-01-29 23:48:33 +01:00
01ccf9e364 Merge branch 'v1.3' into 'v1.3'
#142 ajout du prix de l'équipement

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!138
2021-01-29 22:42:34 +00:00
903439e007 #142 ajout du prix de l'équipement 2021-01-29 23:17:18 +01:00
0166a0c085 #141 Ajout des maladies 2021-01-29 21:42:37 +01:00
75bcfeae20 Gestion écaille sur initiative 2021-01-29 21:41:00 +01:00
449ec40f07 Gestion écaille sur initiative 2021-01-29 21:14:35 +01:00
7ed05b3722 Fix sur le paiement via le tchat 2021-01-29 21:03:32 +01:00
a5311bf15e Controle recursif de l'encombrement lors de deplacement de contenants 2021-01-29 20:42:40 +01:00
543f6c2658 #111 Gestion armes magiques 2021-01-29 20:10:43 +01:00
f15067fff8 #139 Jet d'Endurance 2021-01-29 16:58:45 +01:00
e8af4ac813 Merge branch 'transformation_stress' into 'v1.3'
Amélioration chateau dormant, et armes brisées

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!137
2021-01-29 11:20:00 +00:00
a12f9bbf01 Amélioration messages de stress 2021-01-29 12:12:14 +01:00
861e8de590 Jet de moral neutre à chateau dormant 2021-01-29 12:12:14 +01:00
74b58643c7 Récupération de chance à chateau dormant 2021-01-29 12:12:14 +01:00
f410615dd4 Corrections mineures de création
Positionner le rêve actuel et le seuil à la création du personnage
2021-01-29 12:12:14 +01:00
4825ae9b0b ne pas proposer les armes inutilisables 2021-01-29 12:12:14 +01:00
96d55a7cad #136 Ajout des connaissances 2021-01-27 23:35:45 +01:00
8f3680eebd #136 Divertissements 2021-01-27 21:35:08 +01:00
e138ff0e13 Merge branch 'regles-optionelles' into 'v1.3'
Regles optionelles

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!135
2021-01-27 09:27:14 +00:00
8db6313574 Fix /astro avec ou sans accents 2021-01-26 19:48:36 +01:00
99183be4cb Regles optionelles astrologie 2021-01-26 19:48:36 +01:00
d476961066 Clean import inutiles 2021-01-26 19:48:36 +01:00
6f101f320c Toujours permettre de filtrer les compétences 2021-01-26 19:48:36 +01:00
11a34382a3 Merge branch 'type-compendium' into 'v1.3'
Ajout du type dans le compendium

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!134
2021-01-26 06:48:39 +00:00
4fb34b51a3 Ajout du type dans le compendium 2021-01-26 00:25:57 +01:00
63ca47027c #134 Ajout vehicules 2021-01-25 12:03:19 +01:00
10b620dfc0 #134 Ajout vehicules 2021-01-25 12:01:43 +01:00
b490ba0d8f #134 Liquides et Voyageurs 2021-01-25 11:57:52 +01:00
ebb5be601d #134 Liquides et Voyageurs 2021-01-25 11:55:58 +01:00
f8465850eb #134 Ajout des profils des voyageurs prétirés 2021-01-25 11:48:02 +01:00
12ecb702a4 Merge branch 'regles-combat' into 'v1.3'
Regles combat

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!133
2021-01-25 09:51:05 +00:00
91610894cc #113 règles de combat optionnelles 2021-01-25 08:51:46 +01:00
56bb117a0c Status inconscious/prone/dead
inconscious: si endurance à 0
prone: si chute sur un recul
dead: lors de la deuxième critique, ou si la vie passe en dessous de
-SConst
2021-01-24 19:52:39 +01:00
44e34af397 #136 : Ajout des modeles pour les connaissances 2021-01-24 10:26:35 +01:00
7445e9e51b #49 - Suivi des deplacements en TMR par le MJ 2021-01-23 23:56:43 +01:00
68cd2cef33 FVarious fixes 2021-01-23 20:40:13 +01:00
9b29ca0305 Merge branch 'report-v1.3' into 'v1.3'
Fixes recul/desarmement

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!132
2021-01-23 19:39:15 +00:00
ad2a68aedd Fixes recul/desarmement
# Conflicts:
#	module/rdd-combat.js
2021-01-23 19:27:28 +01:00
25181feec3 Merge branch 'fix-recul-desarme' into 'master'
Fixes recul/desarmement

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!131
2021-01-23 18:11:20 +00:00
5b4c172af2 Merge branch 'master' into 'fix-recul-desarme'
# Conflicts:
#   module/rdd-combat.js
2021-01-23 18:07:27 +00:00
7fc6ccb106 Fi recul + version 2021-01-23 18:44:04 +01:00
26722d26fd Fixes recul/desarmement 2021-01-23 18:37:43 +01:00
41e63cd7e0 Gere recul pour creature 2021-01-23 18:04:49 +01:00
bcc5f77589 Merge branch 'v1.3' into 'master'
V1.3

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!130
2021-01-23 16:56:36 +00:00
67b45bf9f9 Correction combat 2021-01-23 17:50:57 +01:00
667845d77d Correction combat 2021-01-23 17:23:56 +01:00
3b4c35f173 Fix sidebar 2021-01-23 09:30:20 +01:00
55d9d84073 Merge branch 'fix-tmrr' into 'master'
Fix /tmrr

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!128
2021-01-23 08:03:55 +00:00
5ad31ac02b Merge branch 'report-fix-master-v1.3' into 'v1.3'
Report fix master v1.3

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!129
2021-01-23 08:03:44 +00:00
c8ba2f6da9 Fix /tmrr 2021-01-23 00:37:46 +01:00
d032d9e510 Plus d'attaque avec l'esquive 2021-01-23 00:37:21 +01:00
f5deb4e81f Fix /rdd significative 2021-01-23 00:37:14 +01:00
3f603ac05d Fix /tmrr 2021-01-23 00:31:12 +01:00
0575ddf561 Minor fixes 2021-01-23 00:06:45 +01:00
58151e5483 Merge branch 'fixes-1.2' into 'master'
Fixes 1.2

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!126
2021-01-22 22:35:31 +00:00
003fa8c43a Plus d'attaque avec l'esquive 2021-01-22 23:28:27 +01:00
0d3586b3c5 Fix /rdd significative 2021-01-22 23:28:18 +01:00
206 changed files with 7238 additions and 2707 deletions

BIN
icons/arts/chant_0.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/chant_1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/chant_2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/chant_3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/chant_4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/chant_5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/chant_6.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/chant_7.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/chant_8.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danseS_2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/danse_0.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danse_1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danse_2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danse_3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danse_4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
icons/arts/danse_5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danse_6.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
icons/arts/danse_sol_1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/danse_sol_2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/danse_sol_4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/arts/danse_sol_5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/danse_sol_6.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
icons/arts/danse_sol_8.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

60
icons/creatures/mule.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,6 @@
[Dolphin]
SortOrder=1
Timestamp=2021,2,3,17,34,46
Version=4
ViewMode=1
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

130
icons/tmr/gift.svg Normal file
View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="512"
height="512"
viewBox="0 0 512 512"
xml:space="preserve"
sodipodi:docname="gift.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
id="metadata51"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs49" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3840"
inkscape:window-height="2066"
id="namedview47"
showgrid="false"
inkscape:zoom="2.415894"
inkscape:cx="64"
inkscape:cy="163.34211"
inkscape:window-x="-11"
inkscape:window-y="-11"
inkscape:window-maximized="1"
inkscape:current-layer="g14"
inkscape:document-rotation="0" />
<g
id="g14"
transform="matrix(5.7,0,0,5.7,1.6591,1.6521435)">
<g
id="g24-9"
transform="matrix(0.1754386,0,0,0.1754386,3.2674006,3.2686582)"
style="fill:#ffffff;stroke:none"><path
d="m 81.245,212.419 c -9.902,13.127 -19.256,25.526 -8.273,47.079 4.957,9.729 18.132,11.771 28.311,11.771 20.904,0 45.125,-8.057 63.033,-19.182 -2.994,-3.719 -6.111,-8.237 -6.111,-13.949 0,-6.576 4.131,-11.571 7.451,-15.585 1.601,-1.936 3.415,-4.129 3.882,-5.569 0.523,-1.607 0.357,-4.439 0.197,-7.178 -0.299,-5.108 -0.67,-11.466 3.069,-16.605 2.653,-3.644 6.503,-5.517 10.286,-6.759 -3.608,-8.125 -8.398,-16.488 -14.204,-24.48 -14.902,-20.512 -32.983,-33.767 -46.06,-33.767 -2.845,0 -5.39,0.592 -7.78,1.81 -21.868,11.143 -21.404,26.636 -20.912,43.039 0.22,7.359 0.429,14.31 -1.603,20.561 -2.198,6.767 -6.612,12.619 -11.286,18.814 z"
id="path2"
style="fill:#ffffff;stroke:none" /><path
d="m 464.076,203.816 c -7.567,-14.789 -26.952,-17.893 -41.88,-17.893 -9.41,0 -19.295,1.161 -29.221,3.252 1.645,2.602 3.775,5.369 5.992,8.235 10.528,13.614 24.948,32.259 9.778,62.032 -5.735,11.255 -17.472,17.797 -34.132,19.144 4.004,3.046 7.514,6.264 10.369,9.608 7.716,9.035 10.98,18.948 9.44,28.668 -5.153,32.537 -27.667,39.408 -44.107,44.425 -2.622,0.8 -5.172,1.586 -7.547,2.43 17.125,17.508 34.971,27.756 49.438,27.756 4.384,0 8.483,-0.96 12.185,-2.855 32.102,-16.428 31.354,-39.981 30.631,-62.76 -0.318,-10.034 -0.619,-19.512 2.054,-27.791 2.912,-9.018 8.93,-17.024 15.301,-25.501 14.344,-19.083 27.892,-37.108 11.699,-68.75 z"
id="path4"
style="fill:#ffffff;stroke:none" /><path
d="m 270.444,394.702 c 2.878,0.456 5.642,0.687 8.214,0.687 18.176,0 25.863,-11.274 34.001,-23.211 4.148,-6.084 8.066,-11.83 13.384,-15.693 5.755,-4.182 12.766,-6.321 20.188,-8.587 15.727,-4.8 30.581,-9.333 34.364,-33.225 0.893,-5.63 -1.213,-11.479 -6.258,-17.386 -8.141,-9.532 -23.127,-18.049 -39.956,-23.652 -1.862,-0.538 -3.721,-1.116 -5.575,-1.729 -9.632,-2.772 -19.668,-4.561 -29.237,-5.027 0.292,5.036 0.549,11.19 -3.092,16.193 -3.771,5.18 -9.963,6.789 -14.938,8.081 -2.629,0.683 -5.348,1.389 -6.67,2.351 -1.28,0.933 -2.769,3.273 -4.207,5.537 -2.776,4.368 -6.232,9.804 -12.397,11.806 -1.511,0.491 -3.127,0.739 -4.804,0.739 -1.835,0 -3.626,-0.305 -5.359,-0.754 -3.383,17.09 -3.525,36.966 0.635,54.293 2.436,10.148 8.497,27.485 21.707,29.577 z"
id="path6"
style="fill:#ffffff;stroke:none" /><path
d="m 126.439,366.003 c -16.52,-4.826 -39.144,-11.435 -44.37,-44.438 -1.539,-9.719 1.725,-19.632 9.44,-28.667 2.257,-2.643 4.924,-5.206 7.915,-7.669 -19.207,-0.406 -32.657,-7.071 -38.927,-19.376 -14.955,-29.353 -0.779,-48.145 9.572,-61.866 1.457,-1.931 2.882,-3.822 4.177,-5.669 -8.438,-1.537 -16.798,-2.384 -24.81,-2.384 -15.076,0 -34.636,3.13 -42.2,18.042 -16.315,32.161 -1.866,50.776 12.108,68.778 6.156,7.931 11.971,15.422 14.674,23.692 2.944,9.006 2.782,19.021 2.61,29.623 -0.386,23.87 -0.751,46.416 30.949,62.497 3.678,1.866 7.743,2.811 12.085,2.811 15.828,0 35.7,-12.34 54.219,-33.068 -2.312,-0.8 -4.839,-1.546 -7.442,-2.306 z"
id="path8"
style="fill:#ffffff;stroke:none" /><path
d="m 276.172,62.189 c 12.786,0 24.223,5.22 34.962,15.96 9.115,9.115 11.603,22.92 7.36,39.616 9.602,-6.462 19.178,-9.98 27.922,-9.98 5.036,0 9.792,1.123 14.137,3.337 29.352,14.955 28.93,38.491 28.62,55.676 -0.036,2.032 -0.067,4.02 -0.056,5.943 13.727,-6.889 25.322,-15.114 32.853,-23.947 7.611,-8.928 10.762,-17.875 9.364,-26.592 C 425.63,86.594 402.997,80.027 381.11,73.676 371.468,70.879 362.361,68.236 355.314,63.135 347.636,57.578 341.881,49.38 335.789,40.701 324.269,24.291 312.358,7.323 285.965,7.323 c -3.748,0 -7.768,0.339 -11.947,1.009 -20.054,3.212 -28.987,28.625 -32.527,43.488 -1.487,6.242 -2.569,12.945 -3.271,19.898 3.292,-0.724 7.018,-2.048 10.899,-3.439 7.965,-2.855 16.995,-6.09 27.053,-6.09 z"
id="path10"
style="fill:#ffffff;stroke:none" /><path
d="m 80.254,180.726 c 0.028,-2.296 -0.039,-4.745 -0.114,-7.261 -0.516,-17.203 -1.222,-40.762 28.551,-55.932 4.345,-2.214 9.101,-3.336 14.136,-3.336 8.349,0 17.457,3.203 26.621,9.117 -6.331,-19.186 -4.373,-35.058 5.734,-45.165 10.691,-10.692 22.104,-15.89 34.887,-15.89 9.877,0 18.926,3.121 26.909,5.875 1.419,0.49 2.817,0.97 4.191,1.424 -0.685,-4.98 -1.561,-9.809 -2.666,-14.377 -3.594,-14.851 -12.618,-40.235 -32.683,-43.376 -4.124,-0.646 -8.094,-0.973 -11.801,-0.973 -26.95,0 -38.601,17.153 -49.868,33.742 -5.641,8.306 -10.969,16.151 -17.999,21.277 -7.655,5.583 -17.23,8.524 -27.367,11.638 -22.821,7.009 -44.376,13.629 -49.874,48.746 -1.361,8.696 1.798,17.605 9.392,26.48 9.129,10.667 24.272,20.436 41.951,28.011 z"
id="path12"
style="fill:#ffffff;stroke:none" /><path
d="m 328.161,374.443 c -1.295,1.753 -2.6,3.664 -3.935,5.621 -8.438,12.375 -19.993,29.324 -45.568,29.324 -3.304,0 -6.804,-0.289 -10.403,-0.859 -12.671,-2.006 -22.761,-11.63 -29.146,-27.494 -6.21,18.666 -16.992,30 -30.871,32.198 -3.581,0.567 -7.063,0.854 -10.349,0.854 -25.198,0 -36.474,-16.121 -45.533,-29.075 -1.561,-2.232 -3.085,-4.399 -4.611,-6.387 -2.519,4.654 -4.752,9.299 -6.633,13.862 -5.821,14.126 -13.439,39.965 0.946,54.3 11.86,11.818 23.598,17.323 36.938,17.323 11.172,0 21.87,-3.855 32.217,-7.584 9.445,-3.404 18.367,-6.619 27.066,-6.634 9.527,0 18.977,3.24 28.98,6.671 10.371,3.556 21.096,7.234 32.052,7.234 h 0.005 c 13.408,-0.002 25.147,-5.516 36.943,-17.354 14.313,-14.363 6.645,-40.121 0.8,-54.197 -2.432,-5.852 -5.439,-11.836 -8.898,-17.803 z"
id="path14"
style="fill:#ffffff;stroke:none" /><path
d="m 190.069,76.259 c -9.005,0 -16.944,3.746 -24.987,11.789 -9.459,9.458 -4.171,27.047 -0.177,36.69 7.686,18.555 21.693,36.525 36.309,48.605 2.38,-3.296 5.398,-6.483 9.806,-7.914 1.511,-0.491 3.127,-0.739 4.805,-0.739 4.22,0 8.227,1.567 11.763,2.949 2.6,1.016 5.287,2.067 7.057,2.067 1.77,0 4.457,-1.051 7.057,-2.067 3.535,-1.382 7.543,-2.948 11.762,-2.948 1.678,0 3.294,0.249 4.805,0.739 3.715,1.206 6.442,3.662 8.633,6.377 13.957,-12.04 27.143,-29.278 34.512,-47.07 3.994,-9.643 9.282,-27.231 -0.176,-36.69 -8.092,-8.091 -16.055,-11.859 -25.063,-11.859 -7.626,0 -15.102,2.679 -22.331,5.27 -6.931,2.484 -13.477,4.83 -20.049,4.83 -7.115,0 -14.044,-2.39 -21.379,-4.92 -7.286,-2.512 -14.816,-5.109 -22.347,-5.109 z"
id="path16"
style="fill:#ffffff;stroke:none" /><path
d="m 396.271,253.086 c 11.144,-21.87 1.661,-34.13 -8.379,-47.111 -4.504,-5.824 -8.758,-11.324 -10.789,-17.574 -2.199,-6.768 -2.067,-14.096 -1.928,-21.855 0.296,-16.44 0.575,-31.969 -20.978,-42.951 -2.392,-1.218 -4.936,-1.811 -7.781,-1.811 -13.076,0 -31.153,13.253 -46.055,33.763 -7.177,9.878 -12.801,20.322 -16.549,30.183 4.48,1.242 9.45,3.059 12.663,7.474 3.74,5.139 3.368,11.496 3.069,16.604 -0.16,2.739 -0.326,5.571 0.196,7.178 0.467,1.44 2.281,3.633 3.882,5.568 3.319,4.014 7.45,9.008 7.45,15.583 0,3.601 -1.241,6.724 -2.907,9.475 6.998,4.038 14.811,7.587 22.921,10.41 3.011,0.836 5.989,1.759 8.917,2.766 9.424,2.568 18.994,4.068 27.956,4.068 10.181,0.001 23.356,-2.041 28.312,-11.77 z"
id="path18"
style="fill:#ffffff;stroke:none" /><path
d="m 95.897,319.376 c 3.839,24.242 18.717,28.588 34.468,33.189 7.066,2.064 13.742,4.015 19.059,7.877 5.757,4.182 9.957,10.189 14.404,16.547 8.308,11.878 16.155,23.098 34.061,23.098 2.555,0 5.299,-0.229 8.159,-0.683 13.211,-2.092 19.271,-19.429 21.708,-29.577 4.71,-19.62 3.901,-42.504 -0.881,-60.914 -3.359,1.307 -7.109,2.672 -11.051,2.672 -1.678,0 -3.294,-0.249 -4.805,-0.739 -6.165,-2.001 -9.621,-7.438 -12.398,-11.805 -1.439,-2.264 -2.928,-4.605 -4.208,-5.538 -1.322,-0.962 -4.041,-1.668 -6.67,-2.351 -4.976,-1.292 -11.168,-2.9 -14.938,-8.08 -2.434,-3.342 -3.123,-7.199 -3.229,-10.893 -26.569,3.035 -54.982,15.244 -67.422,29.811 -5.043,5.908 -7.149,11.757 -6.257,17.386 z"
id="path20"
style="fill:#ffffff;stroke:none" /><path
d="m 246.796,295.599 c 2.499,0.978 5.084,1.988 6.664,1.988 0.204,0 0.37,-0.019 0.48,-0.055 1.376,-0.447 3.416,-3.657 4.906,-6.001 2.04,-3.21 4.354,-6.849 7.784,-9.346 3.469,-2.525 7.677,-3.618 11.388,-4.583 2.666,-0.692 6.317,-1.641 7.139,-2.768 0.79,-1.086 0.571,-4.821 0.411,-7.548 -0.225,-3.845 -0.48,-8.204 0.856,-12.32 1.292,-3.98 4.011,-7.267 6.41,-10.168 1.889,-2.283 4.238,-5.124 4.238,-6.661 0,-1.536 -2.351,-4.378 -4.238,-6.661 -2.399,-2.9 -5.118,-6.188 -6.41,-10.168 -1.336,-4.115 -1.081,-8.474 -0.856,-12.319 0.16,-2.728 0.379,-6.462 -0.412,-7.549 -0.82,-1.127 -4.471,-2.075 -7.137,-2.768 -3.712,-0.964 -7.918,-2.057 -11.388,-4.583 -3.432,-2.497 -5.745,-6.136 -7.786,-9.347 -1.489,-2.344 -3.529,-5.553 -4.904,-5.999 -0.11,-0.036 -0.276,-0.055 -0.48,-0.055 -1.58,0 -4.165,1.01 -6.665,1.988 -3.63,1.419 -7.745,3.027 -12.153,3.027 -4.408,0 -8.523,-1.609 -12.154,-3.028 -2.5,-0.978 -5.085,-1.988 -6.665,-1.988 -0.204,0 -0.371,0.019 -0.482,0.055 -1.375,0.446 -3.415,3.656 -4.904,5.999 -2.041,3.211 -4.355,6.85 -7.787,9.348 -3.47,2.525 -7.677,3.617 -11.389,4.581 -2.666,0.692 -6.317,1.64 -7.139,2.768 -0.79,1.086 -0.572,4.822 -0.413,7.549 0.225,3.845 0.48,8.203 -0.856,12.319 -1.293,3.98 -4.012,7.267 -6.41,10.167 -1.889,2.284 -4.239,5.126 -4.239,6.662 0,1.537 2.351,4.378 4.239,6.662 2.398,2.9 5.117,6.187 6.41,10.167 1.336,4.115 1.081,8.473 0.856,12.318 -0.159,2.728 -0.377,6.463 0.414,7.55 0.821,1.128 4.472,2.076 7.138,2.768 3.712,0.964 7.918,2.056 11.389,4.581 3.432,2.497 5.745,6.136 7.786,9.347 1.489,2.344 3.53,5.554 4.905,6.001 0.111,0.036 0.277,0.055 0.482,0.055 1.58,0 4.165,-1.011 6.666,-1.988 3.63,-1.419 7.745,-3.028 12.153,-3.028 4.408,0 8.523,1.612 12.153,3.031 z"
id="path22"
style="fill:#ffffff;stroke:none" /></g></g>
<g
id="g16">
</g>
<g
id="g18">
</g>
<g
id="g20">
</g>
<g
id="g22">
</g>
<g
id="g24">
</g>
<g
id="g26">
</g>
<g
id="g28">
</g>
<g
id="g30">
</g>
<g
id="g32">
</g>
<g
id="g34">
</g>
<g
id="g36">
</g>
<g
id="g38">
</g>
<g
id="g40">
</g>
<g
id="g42">
</g>
<g
id="g44">
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

197
icons/tmr/pelerin.svg Normal file
View File

@ -0,0 +1,197 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg878"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="pelerin.svg">
<defs
id="defs872">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1730">
<g
inkscape:label="Clip"
id="use1732"
style="fill:#d38d5f;stroke:#502d16">
<g
id="g1541"
transform="matrix(0.28980934,0,0,0.21909426,120.56466,-12.741092)"
style="display:inline;fill:#d38d5f;stroke:#502d16;stroke-width:2.16856">
<path
sodipodi:nodetypes="cccccc"
id="path1535"
d="m -174.5565,130.97253 h 15.40856 v 508.4827 l -7.70428,24 -7.70428,-24 z"
style="fill:#d38d5f;stroke:#502d16;stroke-width:2.16856" />
<path
transform="matrix(1.001146,0,0,0.893038,2.193524,15.82179)"
style="fill:#d38d5f;stroke:#502d16;stroke-width:2.29344"
d="m -145.09735,123.91028 c 0,13.11269 -10.64218,17.6523 -23.75487,17.6523 -13.11269,0 -23.75487,-4.53961 -23.75487,-17.6523 0,-13.11269 10.64218,-23.75487 23.75487,-23.75487 13.11269,0 23.75487,10.64218 23.75487,23.75487 z"
id="path1537"
sodipodi:nodetypes="csssc" />
<path
style="fill:#d38d5f;stroke:#502d16;stroke-width:2.16856"
d="m -146.94948,221.199 c 0,8.50553 -8.91642,12.68366 -19.90273,12.68366 -10.98631,0 -19.90273,-4.17813 -19.90273,-12.68366 0,-8.50553 8.91642,-9.95873 19.90273,-9.95873 10.98631,0 19.90273,1.4532 19.90273,9.95873 z"
id="path1539"
sodipodi:nodetypes="csssc" />
</g>
<g
style="display:inline;fill:#d38d5f;stroke:#502d16"
id="g1559"
transform="matrix(0.20847315,-0.03662954,0.03662954,0.20847315,-0.34176516,-0.20270665)">
<g
inkscape:label="Fond écu"
id="g1543"
style="fill:#d38d5f;stroke:#502d16" />
<g
style="opacity:1;fill:#d38d5f;stroke:#502d16"
inkscape:label="Meubles"
id="g1553">
<g
id="g1551"
transform="matrix(0.714908,0,0,0.756557,137.7704,128.4719)"
style="display:inline;fill:#d38d5f;fill-opacity:1;stroke:#502d16;stroke-width:2.71947;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<path
sodipodi:nodetypes="ccccc"
id="path1545"
d="m 160.08787,143.23938 39.92645,57.31251 39.53535,-57.31251 h -40.3837 z"
style="fill:#d38d5f;fill-opacity:1;fill-rule:evenodd;stroke:#502d16;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccccccccccccccccc"
id="path1547"
d="m 193.20453,145.31745 c -24.41443,20.15923 -49.98749,37.33861 -73.2768,58.5917 -6.37089,11.43876 -4.50952,20.09512 9.2768,25.68955 14.75917,-16.92275 18.76874,-17.90421 41.38418,-46.03566 -22.42258,29.55858 -41.45116,42.84434 -41.29043,46.09816 5.38114,19.66042 0.98803,22.70493 25.28125,31.0625 2.90109,-14.41044 25.62687,-63.19056 32.51802,-70.81345 -6.73696,8.18151 -29.75646,56.59527 -32.58052,71.37595 18.94602,17.92 18.75832,19.45149 44.6875,14.03125 l 0.375,-80.91001 0.375,80.91001 c 21.42445,5.42024 29.31401,4.7897 44.65625,-14.03125 -3.59166,-13.24549 -25.62533,-59.96461 -31.64832,-69.57405 4.75359,7.7904 26.43091,52.99484 31.61707,69.01155 18.88754,-8.35757 21.70202,-8.69924 25.28125,-31.0625 -1.0235,-6.998 -18.88266,-18.38043 -42.22262,-45.81545 23.11839,25.66768 42.65103,40.10972 42.31637,45.75295 15.18653,-6.16263 15.88219,-19.26899 8.92398,-28.52504 -25.17844,-18.14393 -47.18822,-37.47898 -72.36824,-56.58981 0,0 -4.64225,-4.09784 -6.93074,-3.0414 z"
style="fill:#d38d5f;fill-opacity:1;fill-rule:evenodd;stroke:#502d16;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path1549"
d="m 168.24779,168.92114 c 23.13397,11.51861 44.28729,9.17267 64.46537,0"
style="fill:#d38d5f;fill-opacity:1;fill-rule:evenodd;stroke:#502d16;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
inkscape:label="Reflet final"
id="g1555"
style="fill:#d38d5f;stroke:#502d16" />
<g
inkscape:label="Contour final"
id="g1557"
style="fill:#d38d5f;stroke:#502d16" />
</g>
</g>
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="400"
inkscape:cy="560"
inkscape:document-units="mm"
inkscape:current-layer="svg878"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="2073"
inkscape:window-height="997"
inkscape:window-x="114"
inkscape:window-y="114"
inkscape:window-maximized="0" />
<metadata
id="metadata875">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g1510"
style="fill:#784421;stroke:#ffffff;image-rendering:auto"
transform="translate(-1.0583648,-3.7366014)">
<g
inkscape:label="Clip"
id="g1726"
style="fill:#784421;stroke:#ffffff">
<g
id="g3257"
transform="matrix(0.28980934,0,0,0.21909426,120.56466,-12.741092)"
style="display:inline;fill:#784421;stroke:#ffffff;stroke-width:2.16856">
<path
sodipodi:nodetypes="cccccc"
id="rect3250"
d="m -174.5565,130.97253 h 15.40856 v 508.4827 l -7.70428,24 -7.70428,-24 z"
style="fill:#784421;stroke:#ffffff;stroke-width:2.16856" />
<path
transform="matrix(1.001146,0,0,0.893038,2.193524,15.82179)"
style="fill:#784421;stroke:#ffffff;stroke-width:2.29344"
d="m -145.09735,123.91028 c 0,13.11269 -10.64218,17.6523 -23.75487,17.6523 -13.11269,0 -23.75487,-4.53961 -23.75487,-17.6523 0,-13.11269 10.64218,-23.75487 23.75487,-23.75487 13.11269,0 23.75487,10.64218 23.75487,23.75487 z"
id="path3252"
sodipodi:nodetypes="csssc" />
<path
style="fill:#784421;stroke:#ffffff;stroke-width:2.16856"
d="m -146.94948,221.199 c 0,8.50553 -8.91642,12.68366 -19.90273,12.68366 -10.98631,0 -19.90273,-4.17813 -19.90273,-12.68366 0,-8.50553 8.91642,-9.95873 19.90273,-9.95873 10.98631,0 19.90273,1.4532 19.90273,9.95873 z"
id="path3254"
sodipodi:nodetypes="csssc" />
</g>
<g
style="display:inline;fill:#784421;stroke:#ffffff"
id="g2066"
transform="matrix(0.20847315,-0.03662954,0.03662954,0.20847315,-0.34176516,-0.20270665)">
<g
inkscape:label="Fond écu"
id="g2068"
style="fill:#784421;stroke:#ffffff" />
<g
style="opacity:1;fill:#784421;stroke:#ffffff"
inkscape:label="Meubles"
id="g2070">
<g
id="g4219"
transform="matrix(0.714908,0,0,0.756557,137.7704,128.4719)"
style="display:inline;fill:#784421;fill-opacity:1;stroke:#ffffff;stroke-width:2.71947;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<path
sodipodi:nodetypes="ccccc"
id="path4221"
d="m 160.08787,143.23938 39.92645,57.31251 39.53535,-57.31251 h -40.3837 z"
style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccccccccccccccccc"
id="path4223"
d="m 193.20453,145.31745 c -24.41443,20.15923 -49.98749,37.33861 -73.2768,58.5917 -6.37089,11.43876 -4.50952,20.09512 9.2768,25.68955 14.75917,-16.92275 18.76874,-17.90421 41.38418,-46.03566 -22.42258,29.55858 -41.45116,42.84434 -41.29043,46.09816 5.38114,19.66042 0.98803,22.70493 25.28125,31.0625 2.90109,-14.41044 25.62687,-63.19056 32.51802,-70.81345 -6.73696,8.18151 -29.75646,56.59527 -32.58052,71.37595 18.94602,17.92 18.75832,19.45149 44.6875,14.03125 l 0.375,-80.91001 0.375,80.91001 c 21.42445,5.42024 29.31401,4.7897 44.65625,-14.03125 -3.59166,-13.24549 -25.62533,-59.96461 -31.64832,-69.57405 4.75359,7.7904 26.43091,52.99484 31.61707,69.01155 18.88754,-8.35757 21.70202,-8.69924 25.28125,-31.0625 -1.0235,-6.998 -18.88266,-18.38043 -42.22262,-45.81545 23.11839,25.66768 42.65103,40.10972 42.31637,45.75295 15.18653,-6.16263 15.88219,-19.26899 8.92398,-28.52504 -25.17844,-18.14393 -47.18822,-37.47898 -72.36824,-56.58981 0,0 -4.64225,-4.09784 -6.93074,-3.0414 z"
style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4225"
d="m 168.24779,168.92114 c 23.13397,11.51861 44.28729,9.17267 64.46537,0"
style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.71947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
inkscape:label="Reflet final"
id="g2076"
style="fill:#784421;stroke:#ffffff" />
<g
inkscape:label="Contour final"
id="g2078"
style="fill:#784421;stroke:#ffffff" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

58
icons/tmr/scroll.svg Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 511.999 511.999" style="enable-background:new 0 0 511.999 511.999;" xml:space="preserve">
<path style="fill:#CCAC68;" d="M145.179,371.239H95.282c-35.205,0-63.745,28.539-63.745,63.745l0,0
c0,35.205,28.539,63.745,63.745,63.745H266.31v-93.993L145.179,371.239z"/>
<path style="fill:#E6C275;" d="M356.848,140.762L154.642,13.272H90.44l0,0c-60.783,0-99.78,64.617-71.453,118.395l138.469,262.878
h-0.022c25.403,47.058-8.675,104.182-62.152,104.182h336.415c53.477,0,87.555-57.123,62.152-104.182L356.848,140.762z"/>
<path style="fill:#FFD782;" d="M90.44,13.272c35.205,0,63.745,28.54,63.745,63.745l0,0c0,35.205-28.54,63.745-63.745,63.745h266.408
c35.205,0,63.745-28.54,63.745-63.745l0,0c0-35.205-28.54-63.745-63.745-63.745C356.848,13.272,90.44,13.272,90.44,13.272z"/>
<path d="M342.963,489.153c0,0-195.544,0-195.559,0c1.764,0,6.043-5.742,7.172-6.989c17.747-19.618,25.167-48.132,18.443-73.982
c-2.737-10.522-8.091-19.987-13.121-29.534L27.455,127.206C15.728,104.945,16.489,78.792,29.49,57.25
c13.001-21.543,35.785-34.403,60.947-34.403c29.869,0,54.17,24.3,54.17,54.17s-24.3,54.17-54.17,54.17
c-5.289,0-9.575,4.286-9.575,9.576c0,5.289,4.286,9.575,9.575,9.575h260.695l31.745,58.803c2.512,4.655,8.318,6.387,12.973,3.877
c4.655-2.512,6.389-8.321,3.877-12.973l-27.694-51.301c33.163-7.016,58.129-36.507,58.129-71.729c0-40.429-32.892-73.32-73.32-73.32
H240.78c-5.289,0-9.575,4.286-9.575,9.575s4.286,9.575,9.575,9.575h116.063c29.869,0,54.17,24.3,54.17,54.17
c0,29.866-24.293,54.164-54.17,54.17H139.796c0.919-0.839,1.818-1.7,2.694-2.584c13.491-13.615,21.266-32.414,21.266-51.587
c0-20.045-8.544-39.648-23.128-53.374c-0.28-0.263-0.546-0.537-0.83-0.797h56.304c5.289,0,9.575-4.286,9.575-9.575
s-4.286-9.575-9.575-9.575c0,0-105.664,0-105.665,0c-31.931,0-60.842,16.32-77.341,43.658
c-16.498,27.337-17.463,60.524-2.581,88.774l118.798,225.535H95.277c-40.428,0-73.32,32.891-73.32,73.32s32.892,73.32,73.32,73.32
c0.027,0,0.052-0.001,0.078-0.001h247.609c5.289,0,9.575-4.286,9.575-9.575S348.252,489.153,342.963,489.153z M41.107,434.984
c0-29.869,24.3-54.17,54.17-54.17h44.118c3.82,7.251,8.046,14.427,11.417,21.9c3.922,8.533,5.779,17.635,5.584,26.694
c-0.706,32.866-28.393,59.744-61.136,59.744C65.399,489.146,41.107,464.848,41.107,434.984z"/>
<path d="M502.27,389.999l-78.422-145.272c-2.514-4.655-8.322-6.389-12.973-3.877c-4.655,2.512-6.389,8.321-3.877,12.973
l78.423,145.272c10.312,19.103,9.829,41.639-1.293,60.283c-11.123,18.645-30.724,29.776-52.434,29.776h-44.048
c-5.289,0-9.575,4.286-9.575,9.575s4.286,9.575,9.575,9.575h44.048c28.52,0,54.269-14.622,68.88-39.114
C515.184,444.697,515.818,415.093,502.27,389.999z"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 496 496" style="enable-background:new 0 0 496 496;" xml:space="preserve">
<path style="fill:#5B402E;" d="M0,232v167.2C0,460.8,52,456,113.6,456h268c61.6,0,113.6,4.8,113.6-56.8V232H0z"/>
<path style="fill:#493322;" d="M112,456h270.4c61.6,0,113.6,4.8,113.6-56.8V232"/>
<path style="fill:#5B402E;" d="M496,192v-40c0-61.6-52-112-113.6-112H113.6C52,40,0,90.4,0,152v40H496z"/>
<path style="fill:#493322;" d="M0,152v40h496v-40c0-61.6-52-112-113.6-112"/>
<rect y="232" style="fill:#F2B111;" width="496" height="64"/>
<polyline style="fill:#E88813;" points="0,296 496,296 496,232 "/>
<rect y="152" style="fill:#F2B111;" width="496" height="40"/>
<g>
<polyline style="fill:#E88813;" points="0,192 496,192 496,152 "/>
<rect x="104" y="32" style="fill:#E88813;" width="56" height="152"/>
<rect x="336" y="32" style="fill:#E88813;" width="56" height="152"/>
<rect x="104" y="288" style="fill:#E88813;" width="56" height="176"/>
<rect x="336" y="288" style="fill:#E88813;" width="56" height="176"/>
</g>
<g>
<circle style="fill:#493322;" cx="184" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="226.4" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="269.6" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="312" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="33.6" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="75.2" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="420" cy="264.8" r="8.8"/>
<circle style="fill:#493322;" cx="462.4" cy="264.8" r="8.8"/>
</g>
<path style="fill:#F2B111;" d="M276,346.4c0-15.2-12.8-28-28-28s-28,12.8-28,28c0,10.4,5.6,20,13.6,25.6l-8,52h44.8l-8-52
C270.4,367.2,276,356.8,276,346.4z"/>
<path style="fill:#E88813;" d="M270.4,424l-8-52c8-4.8,13.6-15.2,13.6-25.6c0-15.2-12.8-28-28-28s-28,12.8-28,28"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

94
icons/tmr/wave.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 23 KiB

BIN
icons/vehicules/barque.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
icons/vehicules/canot.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
icons/vehicules/galere.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
icons/vehicules/nef.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -5,10 +5,11 @@
import { RdDUtility } from "./rdd-utility.js"; import { RdDUtility } from "./rdd-utility.js";
import { HtmlUtility } from "./html-utility.js"; import { HtmlUtility } from "./html-utility.js";
import { RdDItem } from "./item.js";
import { RdDItemArme } from "./item-arme.js"; import { RdDItemArme } from "./item-arme.js";
import { RdDItemCompetence } from "./item-competence.js"; import { RdDItemCompetence } from "./item-competence.js";
import { RdDBonus } from "./rdd-bonus.js"; import { RdDBonus } from "./rdd-bonus.js";
import { Misc } from "./misc.js";
import { RdDCombatManager } from "./rdd-combat.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
export class RdDActorSheet extends ActorSheet { export class RdDActorSheet extends ActorSheet {
@ -38,14 +39,20 @@ export class RdDActorSheet extends ActorSheet {
data.data.showCompNiveauBase = this.options.showCompNiveauBase; data.data.showCompNiveauBase = this.options.showCompNiveauBase;
data.data.montrerArchetype = this.options.montrerArchetype; data.data.montrerArchetype = this.options.montrerArchetype;
data.itemsByType = RdDItem.buildItemsClassification(data.items); data.itemsByType = Misc.classify(data.items);
// Competence per category // Competence per category
data.data.comptageArchetype = RdDUtility.getLimitesArchetypes();
data.data.competenceXPTotal = 0; data.data.competenceXPTotal = 0;
data.competenceByCategory = RdDItem.classify( data.competenceByCategory = Misc.classify(
data.itemsByType.competence, data.itemsByType.competence,
item => item.data.categorie, item => item.data.categorie,
item => { item => {
let archetypeKey = (item.data.niveau_archetype < 0) ? 0 : item.data.niveau_archetype;
if (data.data.comptageArchetype[archetypeKey] == undefined) {
data.data.comptageArchetype[archetypeKey] = { "niveau": archetypeKey, "nombreMax": 0, "nombre": 0};
}
data.data.comptageArchetype[archetypeKey].nombre = (data.data.comptageArchetype[archetypeKey]?.nombre??0) + 1; //Comptage archetype
item.data.xpNext = RdDItemCompetence.getCompetenceNextXp(item.data.niveau); item.data.xpNext = RdDItemCompetence.getCompetenceNextXp(item.data.niveau);
item.data.isLevelUp = item.data.xp >= item.data.xpNext; // Flag de niveau à MAJ item.data.isLevelUp = item.data.xp >= item.data.xpNext; // Flag de niveau à MAJ
//this.actor.checkCompetenceXP(item.name); // Petite vérification experience //this.actor.checkCompetenceXP(item.name); // Petite vérification experience
@ -66,6 +73,7 @@ export class RdDActorSheet extends ActorSheet {
currentCarac.xpNext = RdDUtility.getCaracNextXp(currentCarac.value); currentCarac.xpNext = RdDUtility.getCaracNextXp(currentCarac.value);
currentCarac.isLevelUp = (currentCarac.xp >= currentCarac.xpNext); currentCarac.isLevelUp = (currentCarac.xp >= currentCarac.xpNext);
} }
sum += (data.data.beaute >= 0) ? (data.data.beaute - 10) : 0;
data.data.caracSum = sum; data.data.caracSum = sum;
// Force empty arme, at least for Esquive // Force empty arme, at least for Esquive
@ -88,18 +96,13 @@ export class RdDActorSheet extends ActorSheet {
// To avoid armour and so on... // To avoid armour and so on...
data.data.combat = duplicate(RdDUtility.checkNull(data.itemsByType['arme'])); data.data.combat = duplicate(RdDUtility.checkNull(data.itemsByType['arme']));
data.data.combat = RdDUtility._finalizeArmeList(data.data.combat, data.itemsByType.competence, data.data.carac); data.data.combat = RdDCombatManager.finalizeArmeList(data.data.combat, data.itemsByType.competence, data.data.carac);
if (data.competenceByCategory && data.competenceByCategory.melee) { data.esquive = { name: "Esquive", niveau: data.competenceByCategory?.melee.find(it => it.name == 'Esquive')?.data.niveau ?? -6};
//Specific case for Esquive and Corps à Corps let corpsACorps = data.competenceByCategory?.melee.find(it => it.name == 'Corps à corps');
for (const melee of data.competenceByCategory.melee) { if (corpsACorps) {
if (melee.name == "Esquive") let cc_init = RdDCombatManager.calculInitiative(corpsACorps.data.niveau, data.data.carac['melee'].value);
data.data.combat.push({ name: "Esquive", data: { niveau: melee.data.niveau, description: "", force: 6, initiative: "", competence: "Esquive", dommages: 0 } }); data.data.combat.push(RdDItemArme.mainsNues({ niveau: corpsACorps.data.niveau, initiative: cc_init }));
if (melee.name == "Corps à corps") {
let cc_init = RdDUtility.calculInitiative(melee.data.niveau, data.data.carac['melee'].value);
data.data.combat.push(RdDItemArme.mainsNues({ niveau: melee.data.niveau, initiative: cc_init }));
}
}
} }
this.armesList = duplicate(data.data.combat); this.armesList = duplicate(data.data.combat);
@ -107,11 +110,14 @@ export class RdDActorSheet extends ActorSheet {
data.data.compteurs.chance.isChance = true; data.data.compteurs.chance.isChance = true;
data.data.blessures.resume = this.actor.computeResumeBlessure(data.data.blessures); data.data.blessures.resume = this.actor.computeResumeBlessure(data.data.blessures);
// Mise à jour de l'encombrement total // Mise à jour de l'encombrement total et du prix de l'équipement
this.actor.computeEncombrementTotalEtMalusArmure(); this.actor.computeEncombrementTotalEtMalusArmure();
this.actor.computePrixTotalEquipement();
// Common data // Common data
data.data.competenceByCategory = data.competenceByCategory; data.data.competenceByCategory = data.competenceByCategory;
data.data.encTotal = this.actor.encTotal; data.data.encTotal = this.actor.encTotal;
data.data.prixTotalEquipement = this.actor.prixTotalEquipement;
data.data.surprise = RdDBonus.find(this.actor.getSurprise(false)).descr; data.data.surprise = RdDBonus.find(this.actor.getSurprise(false)).descr;
data.data.isGM = game.user.isGM; data.data.isGM = game.user.isGM;
data.ajustementsConditions = CONFIG.RDD.ajustementsConditions; data.ajustementsConditions = CONFIG.RDD.ajustementsConditions;
@ -125,6 +131,7 @@ export class RdDActorSheet extends ActorSheet {
RdDUtility.filterItemsPerTypeForSheet(data); RdDUtility.filterItemsPerTypeForSheet(data);
data.data.sortReserve = data.data.reve.reserve.list; data.data.sortReserve = data.data.reve.reserve.list;
data.data.rencontres = duplicate(data.data.reve.rencontre.list);
data.data.caseSpeciales = data.itemsByType['casetmr']; data.data.caseSpeciales = data.itemsByType['casetmr'];
RdDUtility.buildArbreDeConteneur(this, data); RdDUtility.buildArbreDeConteneur(this, data);
data.data.surEncombrementMessage = (data.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : ""; data.data.surEncombrementMessage = (data.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : "";
@ -182,21 +189,31 @@ export class RdDActorSheet extends ActorSheet {
HtmlUtility._showControlWhen($(".gm-only"), game.user.isGM); HtmlUtility._showControlWhen($(".gm-only"), game.user.isGM);
html.find('#show-hide-competences').click((event) => {
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
this.render(true);
});
// Everything below here is only needed if the sheet is editable // Everything below here is only needed if the sheet is editable
if (!this.options.editable) return; if (!this.options.editable) return;
// Update Inventory Item
html.find('.item-edit').click(ev => { html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item"); const li = $(ev.currentTarget).parents(".item");
const item = this.actor.getOwnedItem(li.data("item-id")); const item = this.actor.getOwnedItem(li.data("item-id"));
item.sheet.render(true); item.sheet.render(true);
}); });
// Update Inventory Item
html.find('.rencontre-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
const rencontreKey = li.data("item-id");
this.actor.deleteTMRRencontre(rencontreKey);
});
// Delete Inventory Item // Delete Inventory Item
html.find('.item-delete').click(ev => { html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item"); const li = $(ev.currentTarget).parents(".item");
RdDUtility.confirmerSuppression(this, li); RdDUtility.confirmerSuppression(this, li);
}); });
html.find('.subacteur-delete').click(ev => { html.find('.subacteur-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item"); const li = $(ev.currentTarget).parents(".item");
RdDUtility.confirmerSuppressionSubacteur(this, li); RdDUtility.confirmerSuppressionSubacteur(this, li);
@ -285,6 +302,36 @@ export class RdDActorSheet extends ActorSheet {
let meditationId = li.data('item-id'); let meditationId = li.data('item-id');
this.actor.rollMeditation(meditationId); this.actor.rollMeditation(meditationId);
}); });
html.find('.chant-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
let chantId = li.data('item-id');
this.actor.rollChant(chantId);
});
html.find('.danse-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
let danseId = li.data('item-id');
this.actor.rollDanse(danseId);
});
html.find('.musique-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
let musiqueId = li.data('item-id');
this.actor.rollMusique(musiqueId);
});
html.find('.oeuvre-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
let oeuvreId = li.data('item-id');
this.actor.rollOeuvre(oeuvreId);
});
html.find('.jeu-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
let jeuId = li.data('item-id');
this.actor.rollJeu(jeuId);
});
html.find('.recettecuisine-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
let recetteId = li.data('item-id');
this.actor.rollRecetteCuisine(recetteId);
});
html.find('.subacteur-label a').click((event) => { html.find('.subacteur-label a').click((event) => {
const li = $(event.currentTarget).parents(".item"); const li = $(event.currentTarget).parents(".item");
let actorId = li.data('actor-id'); let actorId = li.data('actor-id');
@ -311,7 +358,7 @@ export class RdDActorSheet extends ActorSheet {
if (combatant) { if (combatant) {
let armeName = event.currentTarget.attributes['data-arme-name'].value; let armeName = event.currentTarget.attributes['data-arme-name'].value;
let arme = this.armesList.find(a => a.name == armeName); let arme = this.armesList.find(a => a.name == armeName);
RdDUtility.rollInitiativeCompetence(combatant._id, arme); RdDCombatManager.rollInitiativeCompetence(combatant._id, arme);
} else { } else {
ui.notifications.info("Impossible de lancer l'initiative sans être dans un combat."); ui.notifications.info("Impossible de lancer l'initiative sans être dans un combat.");
} }
@ -389,6 +436,11 @@ export class RdDActorSheet extends ActorSheet {
let compName = event.currentTarget.attributes.compname.value; let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCompetenceXP(compName, parseInt(event.target.value)); this.actor.updateCompetenceXP(compName, parseInt(event.target.value));
}); });
// On competence xp change
html.find('.competence-xp-sort').change((event) => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCompetenceXPSort(compName, parseInt(event.target.value));
});
// On competence archetype change // On competence archetype change
html.find('.competence-archetype').change((event) => { html.find('.competence-archetype').change((event) => {
let compName = event.currentTarget.attributes.compname.value; let compName = event.currentTarget.attributes.compname.value;
@ -401,10 +453,6 @@ export class RdDActorSheet extends ActorSheet {
this.options.editCaracComp = !this.options.editCaracComp; this.options.editCaracComp = !this.options.editCaracComp;
this.render(true); this.render(true);
}); });
html.find('#show-hide-competences').click((event) => {
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
this.render(true);
});
html.find('#show-hide-archetype').click((event) => { html.find('#show-hide-archetype').click((event) => {
this.options.montrerArchetype = !this.options.montrerArchetype; this.options.montrerArchetype = !this.options.montrerArchetype;
this.render(true); this.render(true);
@ -438,7 +486,7 @@ export class RdDActorSheet extends ActorSheet {
this.actor.setEthylisme(parseInt(event.target.value)); this.actor.setEthylisme(parseInt(event.target.value));
}); });
html.find('#stress-test').click((event) => { html.find('#stress-test').click((event) => {
this.actor.stressTest(); this.actor.transformerStress();
this.render(true); this.render(true);
}); });
html.find('#moral-malheureux').click((event) => { html.find('#moral-malheureux').click((event) => {
@ -462,6 +510,10 @@ export class RdDActorSheet extends ActorSheet {
this.actor.jetVie(); this.actor.jetVie();
this.render(true); this.render(true);
}); });
html.find('#jet-endurance').click((event) => {
this.actor.jetEndurance();
this.render(true);
});
html.find('.monnaie-plus').click((event) => { html.find('.monnaie-plus').click((event) => {
const li = $(event.currentTarget).parents(".item"); const li = $(event.currentTarget).parents(".item");

View File

@ -5,7 +5,7 @@
import { RdDUtility } from "./rdd-utility.js"; import { RdDUtility } from "./rdd-utility.js";
import { HtmlUtility } from "./html-utility.js"; import { HtmlUtility } from "./html-utility.js";
import { RdDItem } from "./item.js"; import { Misc } from "./misc.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
export class RdDActorVehiculeSheet extends ActorSheet { export class RdDActorVehiculeSheet extends ActorSheet {
@ -36,7 +36,7 @@ export class RdDActorVehiculeSheet extends ActorSheet {
getData() { getData() {
let data = super.getData(); let data = super.getData();
data.itemsByType = RdDItem.buildItemsClassification(data.items); data.itemsByType = Misc.classify(data.items);
RdDUtility.filterItemsPerTypeForSheet(data); RdDUtility.filterItemsPerTypeForSheet(data);
RdDUtility.buildArbreDeConteneur(this, data); RdDUtility.buildArbreDeConteneur(this, data);

File diff suppressed because it is too large Load Diff

View File

@ -4,12 +4,14 @@
*/ */
export class ChatUtility { export class ChatUtility {
/* -------------------------------------------- */
static onSocketMessage(sockmsg) { static onSocketMessage(sockmsg) {
switch (sockmsg.msg) { switch (sockmsg.msg) {
case "msg_delete_chat_message": return ChatUtility.onRemoveMessages(sockmsg.part, sockmsg.gmId); case "msg_delete_chat_message": return ChatUtility.onRemoveMessages(sockmsg.part, sockmsg.gmId);
} }
} }
/* -------------------------------------------- */
static onRemoveMessages(part, gmId) { static onRemoveMessages(part, gmId) {
if (game.user._id == gmId) { if (game.user._id == gmId) {
const toDelete = game.messages.filter(it => it.data.content.includes(part)); const toDelete = game.messages.filter(it => it.data.content.includes(part));
@ -107,5 +109,5 @@ export class ChatUtility {
ChatMessage.create(data); ChatMessage.create(data);
} }
} }
} }

View File

@ -1,18 +1,71 @@
const articlesApostrophes = { const articlesApostrophes = {
'de' : 'd\'', 'de': 'd\'',
'le' : 'l\'', 'le': 'l\'',
'la' : 'l\'' 'la': 'l\''
} }
export class Grammar { export class Grammar {
/* -------------------------------------------- */
static apostrophe(article, word) { static apostrophe(article, word) {
if (articlesApostrophes[article] && Grammar.startsWithVoyel(word)) { if (articlesApostrophes[article] && Grammar.startsWithVoyel(word)) {
return articlesApostrophes[article] + word return articlesApostrophes[article] + word
} }
return article + ' ' + word; return article + ' ' + word;
} }
/* -------------------------------------------- */
static startsWithVoyel(word) { static startsWithVoyel(word) {
return word.match(/^[aeiouy]/i) return word.match(/^[aeiouy]/i)
} }
/* -------------------------------------------- */
static toLowerCaseNoAccent(words) {
return words?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "") ?? words;
}
/* -------------------------------------------- */
static articleDetermine(genre) {
switch (toLowerCaseNoAccent(genre)) {
case 'f': case 'feminin': return 'la';
case 'p': case 'mp': case 'fp': case 'pluriel': return 'les';
default:
case 'm': case 'masculin': return 'le';
}
}
/* -------------------------------------------- */
static articleIndétermine(genre) {
switch (toLowerCaseNoAccent(genre)) {
case 'f': case 'feminin': return 'une';
case 'p': case 'fp': case 'mp': case 'pluriel': return 'des';
case 'n': case 'neutre': return 'du'
default:
case 'm': case 'masculin': return 'un';
}
}
/* -------------------------------------------- */
/**
* renvoie un des mots en fonction du genre:
*
* - masculin/neutre/m/n : mots[0]
* - feminin/f : mots[1]
* - pluriel/mp/p : mots[2]
* - fp : mots[3]
*
* @param {*} genre
* @param {...any} mots
*/
static accord(genre, ...mots) {
switch (toLowerCaseNoAccent(genre)) {
default:
case 'n': case 'neutre':
case 'm': case 'masculin': return mots[0];
case 'f': case 'feminin': return mots[1];
case 'p': case 'mp': case 'pluriel': return mots[2]
case 'fp': return mots[3];
}
}
} }

View File

@ -54,7 +54,7 @@ export class RdDItemArme extends Item {
return arme.data.categorie_parade; return arme.data.categorie_parade;
} }
// pour compatibilité avec des personnages existants // pour compatibilité avec des personnages existants
if (arme.type == 'competencecreature') { if (arme.type == 'competencecreature' || arme.data.categorie == 'creature' ) {
return arme.data.categorie_parade || (arme.data.isparade ? 'sans-armes' : ''); return arme.data.categorie_parade || (arme.data.isparade ? 'sans-armes' : '');
} }
if (!arme.type.match(/arme|competencecreature/)) { if (!arme.type.match(/arme|competencecreature/)) {
@ -144,6 +144,9 @@ export class RdDItemArme extends Item {
return arme; return arme;
} }
static isArmeUtilisable(item) {
return item.type == 'arme' && (item.data.resistance > 0 || item.data.portee_courte>0);
}
static mainsNues(actorData={}) { static mainsNues(actorData={}) {
const mainsNues = { const mainsNues = {

View File

@ -59,10 +59,12 @@ export class RdDItemCompetence extends Item {
static computeCompetenceXPCost(competence) { static computeCompetenceXPCost(competence) {
let xp = RdDItemCompetence.getDeltaXp(competence.data.base, competence.data.niveau ?? competence.data.base); let xp = RdDItemCompetence.getDeltaXp(competence.data.base, competence.data.niveau ?? competence.data.base);
xp += competence.data.xp ?? 0; xp += competence.data.xp ?? 0;
if ( competence.name.includes('Thanatos') ) xp *= 2; /// Thanatos compte double !
xp += competence.data.xp_sort ?? 0; xp += competence.data.xp_sort ?? 0;
return xp; return xp;
} }
/* -------------------------------------------- */
static computeEconomieCompetenceTroncXP(competences) { static computeEconomieCompetenceTroncXP(competences) {
let economie = 0; let economie = 0;
for (let troncList of competenceTroncs) { for (let troncList of competenceTroncs) {
@ -87,17 +89,20 @@ export class RdDItemCompetence extends Item {
return RdDItemCompetence.getCompetenceXp(niveau + 1); return RdDItemCompetence.getCompetenceXp(niveau + 1);
} }
/* -------------------------------------------- */
static getCompetenceXp(niveau) { static getCompetenceXp(niveau) {
RdDItemCompetence._valideNiveau(niveau); RdDItemCompetence._valideNiveau(niveau);
return niveau < -10 ? 0 : competence_xp_par_niveau[niveau + 10]; return niveau < -10 ? 0 : competence_xp_par_niveau[niveau + 10];
} }
/* -------------------------------------------- */
static getDeltaXp(from, to) { static getDeltaXp(from, to) {
RdDItemCompetence._valideNiveau(from); RdDItemCompetence._valideNiveau(from);
RdDItemCompetence._valideNiveau(to); RdDItemCompetence._valideNiveau(to);
return competence_xp_cumul[to] - competence_xp_cumul[from]; return competence_xp_cumul[to] - competence_xp_cumul[from];
} }
/* -------------------------------------------- */
static _valideNiveau(niveau){ static _valideNiveau(niveau){
if (niveau < -11 || niveau > competence_niveau_max) { if (niveau < -11 || niveau > competence_niveau_max) {
console.warn("Niveau en dehors des niveaux de compétences: [-11, " + competence_niveau_max + "]", niveau) console.warn("Niveau en dehors des niveaux de compétences: [-11, " + competence_niveau_max + "]", niveau)

View File

@ -1,7 +1,6 @@
/* -------------------------------------------- */ /* -------------------------------------------- */
export class RdDItemCompetenceCreature extends Item { export class RdDItemCompetenceCreature extends Item {
/* -------------------------------------------- */ /* -------------------------------------------- */
static setRollDataCreature(rollData) { static setRollDataCreature(rollData) {
rollData.carac = { "carac_creature": { label: rollData.competence.name, value: rollData.competence.data.carac_value } }; rollData.carac = { "carac_creature": { label: rollData.competence.name, value: rollData.competence.data.carac_value } };
@ -17,7 +16,7 @@ export class RdDItemCompetenceCreature extends Item {
/* -------------------------------------------- */ /* -------------------------------------------- */
static toArme(item) { static toArme(item) {
if (item.type == 'competencecreature' && item.data.iscombat) { if (RdDItemCompetenceCreature.isCompetenceAttaque(item)) {
let arme = { name: item.name, data: duplicate(item.data) }; let arme = { name: item.name, data: duplicate(item.data) };
mergeObject(arme.data, mergeObject(arme.data,
{ {
@ -30,8 +29,17 @@ export class RdDItemCompetenceCreature extends Item {
}); });
return arme; return arme;
} }
console.error("RdDItem.toArme(", item, ") : impossible de transformer l'Item en arme"); console.error("RdDItemCompetenceCreature.toArme(", item, ") : impossible de transformer l'Item en arme");
return undefined; return undefined;
} }
/* -------------------------------------------- */
static isCompetenceAttaque(item) {
return item.type == 'competencecreature' && item.data.iscombat;
}
/* -------------------------------------------- */
static isCompetenceParade(item) {
return item.type == 'competencecreature' && item.data.isparade;
}
} }

View File

@ -24,7 +24,7 @@ export class RdDItem extends Item {
`<p>Modifier la quantité?</p> `<p>Modifier la quantité?</p>
<div class="form-group"> <div class="form-group">
<label> Quantité</label> <label> Quantité</label>
<input name="quantity" type="text" placeholder="Ne rien mettre pour quantité infinie"/> <input name="quantity" type="text" value="1"/>
</div> </div>
<p>Modifier la prix?</p> <p>Modifier la prix?</p>
<div class="form-group"> <div class="form-group">
@ -53,7 +53,7 @@ export class RdDItem extends Item {
dialogResult[0] = -1 dialogResult[0] = -1
else if (this.data.data.quantite < dialogResult[0]) else if (this.data.data.quantite < dialogResult[0])
{ {
dialogResult[0] = this.data.data.quantite dialogResult[0] = this.data.data.quantite;
ui.notifications.notify(`Impossible de poster plus que ce que vous avez. La quantité à été réduite à ${dialogResult[0]}.`) ui.notifications.notify(`Impossible de poster plus que ce que vous avez. La quantité à été réduite à ${dialogResult[0]}.`)
this.update({"data.quantite" : 0}) this.update({"data.quantite" : 0})
} }

View File

@ -49,7 +49,7 @@ export class RdDItemSheet extends ItemSheet {
async getData() { async getData() {
let data = super.getData(); let data = super.getData();
data.categorieCompetences = RdDUtility.getCategorieCompetences(); data.categorieCompetences = RdDUtility.getCategorieCompetences();
if ( data.item.type == 'tache' || data.item.type == 'livre' || data.item.type == 'meditation') { if ( data.item.type == 'tache' || data.item.type == 'livre' || data.item.type == 'meditation' || data.item.type == 'oeuvre') {
data.caracList = duplicate(game.system.model.Actor.personnage.carac); data.caracList = duplicate(game.system.model.Actor.personnage.carac);
data.competences = await RdDUtility.loadCompendiumNames( 'foundryvtt-reve-de-dragon.competences' ); data.competences = await RdDUtility.loadCompendiumNames( 'foundryvtt-reve-de-dragon.competences' );
} }
@ -80,6 +80,12 @@ export class RdDItemSheet extends ItemSheet {
// Select competence categorie // Select competence categorie
html.find("#categorie").on("click", this._onClickSelectCategorie.bind(this) ); html.find("#categorie").on("click", this._onClickSelectCategorie.bind(this) );
html.find('#sheet-competence-xp').change((event) => {
if ( this.object.data.type == 'competence') {
RdDUtility.checkThanatosXP( this.object.data.name );
}
} );
html.find('#creer-tache-livre').click((event) => { html.find('#creer-tache-livre').click((event) => {
let actorId = event.currentTarget.attributes['data-actor-id'].value; let actorId = event.currentTarget.attributes['data-actor-id'].value;
let actor = game.actors.get( actorId ); let actor = game.actors.get( actorId );

View File

@ -68,13 +68,13 @@ export class RdDItemSort extends Item {
let list = []; let list = [];
let caseCheck = {}; let caseCheck = {};
for(let i=0; i<formData.bonusValue.length; i++) { for(let i=0; i<formData.bonusValue.length; i++) {
let caseTMR = formData.caseValue[i] || 'A1'; let coord = formData.caseValue[i] || 'A1';
caseTMR = caseTMR.toUpperCase(); coord = coord.toUpperCase();
if ( TMRUtility.verifyTMRCoord( caseTMR ) ) { // Sanity check if ( TMRUtility.verifyTMRCoord( coord ) ) { // Sanity check
let bonus = formData.bonusValue[i] || 0; let bonus = formData.bonusValue[i] || 0;
if ( bonus > 0 && caseCheck[caseTMR] == undefined ) { if ( bonus > 0 && caseCheck[coord] == undefined ) {
caseCheck[caseTMR] = bonus; caseCheck[coord] = bonus;
list.push( caseTMR+":"+bonus ); list.push( coord+":"+bonus );
} }
} }
} }
@ -86,21 +86,21 @@ export class RdDItemSort extends Item {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static incrementBonusCase( actor, sort, coordTMR ) { static incrementBonusCase( actor, sort, coord ) {
let bonusCaseList = this.buildBonusCaseList(sort.data.bonuscase, false); let bonusCaseList = this.buildBonusCaseList(sort.data.bonuscase, false);
//console.log("ITEMSORT", sort, bonusCaseList); //console.log("ITEMSORT", sort, bonusCaseList);
let found = false; let found = false;
let StringList = []; let StringList = [];
for( let bc of bonusCaseList) { for( let bc of bonusCaseList) {
if (bc.case == coordTMR) { // Case existante if (bc.case == coord) { // Case existante
found = true; found = true;
bc.bonus = Number(bc.bonus) + 1; bc.bonus = Number(bc.bonus) + 1;
} }
StringList.push( bc.case+':'+bc.bonus ); StringList.push( bc.case+':'+bc.bonus );
} }
if ( !found) { //Nouvelle case, bonus de 1 if ( !found) { //Nouvelle case, bonus de 1
StringList.push(coordTMR+':1'); StringList.push(coord+':1');
} }
// Sauvegarde/update // Sauvegarde/update
@ -110,10 +110,10 @@ export class RdDItemSort extends Item {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static getCaseBonus( sort, coordTMR) { static getCaseBonus( sort, coord) {
let bonusCaseList = this.buildBonusCaseList(sort.data.bonuscase, false); let bonusCaseList = this.buildBonusCaseList(sort.data.bonuscase, false);
for( let bc of bonusCaseList) { for( let bc of bonusCaseList) {
if (bc.case == coordTMR) { // Case existante if (bc.case == coord) { // Case existante
return Number(bc.bonus); return Number(bc.bonus);
} }
} }

View File

@ -1,28 +0,0 @@
/* -------------------------------------------- */
export class RdDItem {
/* -------------------------------------------- */
static buildItemsClassification(items) {
return RdDItem.classify(items, it => it.type)
}
static classify(items, classifier = it => it.type, transform = it => it) {
let itemsBy = {};
RdDItem.classifyInto(itemsBy, items, classifier, transform);
return itemsBy;
}
static classifyInto(itemsBy, items, classifier = it => it.type, transform = it => it) {
for (const item of items) {
const classification = classifier(item);
let list = itemsBy[classification];
if (!list) {
list = [];
itemsBy[classification] = list;
}
list.push(transform(item));
}
}
}

View File

@ -1,5 +1,4 @@
/** /**
* This class is intended as a placeholder for utility methods unrelated * This class is intended as a placeholder for utility methods unrelated
* to actual classes of the game system or of FoundryVTT * to actual classes of the game system or of FoundryVTT
@ -41,4 +40,31 @@ export class Misc {
default: return '1/' + diviseur; default: return '1/' + diviseur;
} }
} }
static classify(items, classifier = it => it.type, transform = it => it) {
let itemsBy = {};
Misc.classifyInto(itemsBy, items, classifier, transform);
return itemsBy;
}
static classifyInto(itemsBy, items, classifier = it => it.type, transform = it => it) {
for (const item of items) {
const classification = classifier(item);
let list = itemsBy[classification];
if (!list) {
list = [];
itemsBy[classification] = list;
}
list.push(transform(item));
}
}
static rollOneOf(array) {
return array[new Roll("1d" + array.length).evaluate().total - 1];
}
static distinct(array) {
return [...new Set(array)];
}
} }

71
module/poetique.js Normal file
View File

@ -0,0 +1,71 @@
import { Misc } from "./misc.js"
const poesieHautReve = [
{
reference: 'Le Ratier Bretonien',
extrait: `Le courant du Fleuve
<br>Te domine et te Porte
<br>Avant que tu te moeuves
<br>Combat le, ou il t'emporte`
},
{
reference: 'Incompatibilité, Charles Beaudelaire',
extrait: `Et lorsque par hasard une nuée errante
<br>Assombrit dans son vol le lac silencieux,
<br>On croirait voir la robe ou l'ombre transparente
<br>D'un esprit qui voyage et passe dans les cieux.`
},
{
reference: 'Au fleuve de Loire, Joachim du Bellay',
extrait: `Ô de qui la vive course
<br>Prend sa bienheureuse source,
<br>Dune argentine fontaine,
<br>Qui dune fuite lointaine,
<br>Te rends au sein fluctueux
<br>De lOcéan monstrueux`
},
{
reference: 'Denis Gerfaud',
extrait: `Et l'on peut savoir qui est le maître d'Oniros, c'est le Fleuve de l'Oubli.
Et l'on sait qui est le créateur du Fleuve de l'Oubli, c'est Hypnos et Narcos.
Mais l'on ne sait pas qui est le maître du Fleuve de l'Oubli,
sinon peut-être lui-même, ou peut-être Thanatos` },
{
reference: 'Denis Gerfaud',
extrait: `Narcos est la source du Fleuve de l'Oubli et Hypnos l'embouchure
Remonter le Fleuve est la Voie de la Nuit, la Voie du Souvenir.
Descendre le Fleuve est la Voie du Jour, la Voie de l'Oubli`
},
{
reference: 'Denis Gerfaud',
extrait: `Narcos engendre le fils dont il est la mère à l'heure du Vaisseau,
car Oniros s'embarque pour redescendre le Fleuve
vers son père Hypnos sur la Voie de l'Oubli`
},
{
reference: 'Denis Gerfaud',
extrait: `Hypnos engendre le fils dont il est la mère à l'heure du Serpent, car
tel les serpents, Oniros commence à remonter le Fleuve
sur le Voie du Souvenir vers son père Narcos`
},
{
reference: 'Denis Gerfaud',
extrait: `Ainsi se cuccèdent les Jours et les Ages.
<br>Les jours des Dragons sont les Ages des Hommes.`
},
{
reference: 'Denis Gerfaud',
extrait: `Ainsi parlent les sages:
&laquo;Les Dragons sont créateurs de leurs rêves, mais ils ne sont pas créateurs d'Oniros
Les Dragons ne sont pas les maîtres de leurs rêvezs, car ils ne sont pas maîtres d'Oniros.
Nul ne sait qui est le créateur des Dragons, ni qui est leur maître.
Mais l'on peut supposer qui est le maître du Rêve des Dragons, c'est Oniros&raquo;`
},
]
export class Poetique {
static getExtrait(){
return Misc.rollOneOf(poesieHautReve);
}
}

View File

@ -1,4 +1,3 @@
import { Misc } from "./misc.js";
/** /**
* Extend the base Dialog entity by defining a custom window to perform roll. * Extend the base Dialog entity by defining a custom window to perform roll.

View File

@ -1,7 +1,5 @@
import { RdDItemCompetence } from "./item-competence.js"; import { RdDItemCompetence } from "./item-competence.js";
import { Misc } from "./misc.js";
import { RdDCalendrier } from "./rdd-calendrier.js";
import { RdDUtility } from "./rdd-utility.js";
/** /**
* Extend the base Dialog entity by defining a custom window to perform roll. * Extend the base Dialog entity by defining a custom window to perform roll.

View File

@ -32,7 +32,7 @@ export class RdDBonus {
let dmg = { total: 0 }; let dmg = { total: 0 };
if (rollData.arme && rollData.arme.name.toLowerCase() == "esquive") { if (rollData.arme && rollData.arme.name.toLowerCase() == "esquive") {
// Specific case management // Specific case management
ui.notifications.warn("Calcul de bonus dégats sur eswquive"); ui.notifications.warn("Calcul de bonus dégats sur esquive !");
} else { } else {
dmg.dmgArme = RdDBonus._dmgArme(rollData); dmg.dmgArme = RdDBonus._dmgArme(rollData);
dmg.penetration = RdDBonus._peneration(rollData); dmg.penetration = RdDBonus._peneration(rollData);
@ -74,9 +74,15 @@ export class RdDBonus {
/* -------------------------------------------- */ /* -------------------------------------------- */
static _dmgArme(rollData) { static _dmgArme(rollData) {
return rollData.arme == undefined ? 0 : (rollData.arme.data.dommagesReels ?? Number(rollData.arme.data.dommages ?? 0)); if ( rollData.arme) {
let dmgBase = rollData.arme.data.dommagesReels ?? Number(rollData.arme.data.dommages ?? 0);
//Le bonus dégats magiques ne peut pas faire dépasser le bonus de l'arme (cf p.278)
return dmgBase + Math.min(dmgBase, rollData.arme.data.magique ? rollData.arme.data.ecaille_efficacite : 0);
}
return 0;
} }
/* -------------------------------------------- */
static _peneration(rollData) { static _peneration(rollData) {
return parseInt(rollData.arme?.data.penetration ?? 0); return parseInt(rollData.arme?.data.penetration ?? 0);
} }

View File

@ -4,6 +4,7 @@ import { RdDAstrologieEditeur } from "./rdd-astrologie-editeur.js";
import { HtmlUtility } from "./html-utility.js"; import { HtmlUtility } from "./html-utility.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js"; import { RdDResolutionTable } from "./rdd-resolution-table.js";
import { RdDUtility } from "./rdd-utility.js"; import { RdDUtility } from "./rdd-utility.js";
import { Grammar } from "./grammar.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
const dossierIconesHeures = 'systems/foundryvtt-reve-de-dragon/icons/heures/' const dossierIconesHeures = 'systems/foundryvtt-reve-de-dragon/icons/heures/'
@ -78,7 +79,8 @@ export class RdDCalendrier extends Application {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getDateFromIndex( index ) { getDateFromIndex( index = undefined ) {
if ( !index) index = this.getCurrentDayIndex();
let month = Math.floor(index / 28); let month = Math.floor(index / 28);
let day = (index - (month*28)) + 1; let day = (index - (month*28)) + 1;
return day+" "+heuresList[month]; return day+" "+heuresList[month];
@ -116,45 +118,33 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */ /* -------------------------------------------- */
getCurrentNombreAstral() { getCurrentNombreAstral() {
let index = this.getCurrentDayIndex(); let indexDate = this.getCurrentDayIndex();
return this.getNombreAstral(index); return this.getNombreAstral(indexDate);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getNombreAstral( index ) { getNombreAstral( indexDate ) {
const liste = this.listeNombreAstral || this._loadListNombreAstral(); const liste = this.listeNombreAstral ?? this._loadListNombreAstral();
let astralData = liste.find( (nombreAstral, i) => nombreAstral.index == index ); let astralData = liste.find( (nombreAstral, i) => nombreAstral.index == indexDate );
if ( astralData == undefined ) { if (! astralData?.nombreAstral ) {
this.rebuildListeNombreAstral(); this.rebuildListeNombreAstral();
astralData = liste.find( (nombreAstral, i) => nombreAstral.index == index ); astralData = liste.find( (nombreAstral, i) => nombreAstral.index == indexDate );
} }
return astralData.nombreAstral || "N/A"; return astralData?.nombreAstral ?? "N/A";
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
rebuildListeNombreAstral() { rebuildListeNombreAstral() {
// Auto-create if needed
if ( this.listeNombreAstral == undefined)
this.listeNombreAstral = [];
// Nettoyage des nombres astraux anciens
let jourCourant = this.getCurrentDayIndex(); let jourCourant = this.getCurrentDayIndex();
let jourFin = jourCourant + 12; let jourFin = jourCourant + 12;
let newList = this.listeNombreAstral.filter( (nombreAstral, i) => nombreAstral && nombreAstral.index >= jourCourant && nombreAstral.index < jourFin); let newList = [0,1,2,3,4,5,6,7,8,9,10,11].map( i => this.ajouterNombreAstral(jourCourant + i));
//console.log("LSTES", this.listeNombreAstral, newList ); if (this.listeNombreAstral) {
for (const na of this.listeNombreAstral) {
let lastDay = jourCourant; if (na && na.index >= jourCourant && na.index < jourFin) {
for (let i=0; i < MAX_NOMBRE_ASTRAL; i++) { newList[na.index - jourCourant] = na;
let nombreAstral = newList[i]; }
if ( nombreAstral ) {
lastDay = nombreAstral.index + 1;
} else {
newList.push( this.ajouterNombreAstral( lastDay) );
lastDay += 1;
} }
} }
this.listeNombreAstral = newList;
game.settings.set("foundryvtt-reve-de-dragon", "liste-nombre-astral", this.listeNombreAstral ); game.settings.set("foundryvtt-reve-de-dragon", "liste-nombre-astral", this.listeNombreAstral );
} }
@ -274,8 +264,9 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */ /* -------------------------------------------- */
getAjustementAstrologique(heureNaissance, name='inconnu') getAjustementAstrologique(heureNaissance, name='inconnu')
{ {
if (heureNaissance && heuresDef[heureNaissance]) { let heure = Grammar.toLowerCaseNoAccent(heureNaissance);
let hn = heuresDef[heureNaissance].heure; if (heure && heuresDef[heure]) {
let hn = heuresDef[heure].heure;
let chiffreAstral = this.getCurrentNombreAstral(); let chiffreAstral = this.getCurrentNombreAstral();
let heureCourante = this.calendrier.heureRdD; let heureCourante = this.calendrier.heureRdD;
let ecartChance = (hn + chiffreAstral - heureCourante)%12; let ecartChance = (hn + chiffreAstral - heureCourante)%12;

View File

@ -1,3 +1,5 @@
import { Grammar } from "./grammar.js";
export class RdDCarac { export class RdDCarac {
static isAgiliteOuDerivee(selectedCarac) { static isAgiliteOuDerivee(selectedCarac) {
@ -25,6 +27,6 @@ export class RdDCarac {
* ainsi que de Perception active et volontaire. * ainsi que de Perception active et volontaire.
*/ */
static isActionPhysique(selectedCarac) { static isActionPhysique(selectedCarac) {
return selectedCarac?.label.match(/(Apparence|Force|Agilité|Dextérité|Vue|Ouïe|Odorat-Goût|Empathie|Mêlée|Tir|Lancer|robée)/); return Grammar.toLowerCaseNoAccent(selectedCarac?.label).match(/(apparence|force|agilite|dexterite|vue|ouie|odorat|empathie|melee|tir|lancer|derobee)/);
} }
} }

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