@jjlmoya/utils-tabletop 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/package.json +5 -3
  2. package/src/entries.ts +15 -1
  3. package/src/index.ts +3 -0
  4. package/src/tests/locale_completeness.test.ts +2 -1
  5. package/src/tests/tool_validation.test.ts +2 -1
  6. package/src/tool/decision-wheel/audio.ts +78 -0
  7. package/src/tool/decision-wheel/bibliography.astro +16 -0
  8. package/src/tool/decision-wheel/bibliography.ts +8 -0
  9. package/src/tool/decision-wheel/client.ts +226 -0
  10. package/src/tool/decision-wheel/component.astro +48 -0
  11. package/src/tool/decision-wheel/components/SegmentEditor.astro +22 -0
  12. package/src/tool/decision-wheel/components/SpinHistory.astro +17 -0
  13. package/src/tool/decision-wheel/components/SpinResult.astro +13 -0
  14. package/src/tool/decision-wheel/components/WheelCanvas.astro +23 -0
  15. package/src/tool/decision-wheel/decision-wheel.css +632 -0
  16. package/src/tool/decision-wheel/drawing.ts +144 -0
  17. package/src/tool/decision-wheel/entry.ts +48 -0
  18. package/src/tool/decision-wheel/i18n/de.ts +97 -0
  19. package/src/tool/decision-wheel/i18n/en.ts +251 -0
  20. package/src/tool/decision-wheel/i18n/es.ts +93 -0
  21. package/src/tool/decision-wheel/i18n/fr.ts +93 -0
  22. package/src/tool/decision-wheel/i18n/id.ts +93 -0
  23. package/src/tool/decision-wheel/i18n/it.ts +93 -0
  24. package/src/tool/decision-wheel/i18n/ja.ts +93 -0
  25. package/src/tool/decision-wheel/i18n/ko.ts +93 -0
  26. package/src/tool/decision-wheel/i18n/nl.ts +93 -0
  27. package/src/tool/decision-wheel/i18n/pl.ts +93 -0
  28. package/src/tool/decision-wheel/i18n/pt.ts +93 -0
  29. package/src/tool/decision-wheel/i18n/ru.ts +75 -0
  30. package/src/tool/decision-wheel/i18n/sv.ts +93 -0
  31. package/src/tool/decision-wheel/i18n/tr.ts +93 -0
  32. package/src/tool/decision-wheel/i18n/zh.ts +93 -0
  33. package/src/tool/decision-wheel/index.ts +9 -0
  34. package/src/tool/decision-wheel/logic.test.ts +163 -0
  35. package/src/tool/decision-wheel/logic.ts +145 -0
  36. package/src/tool/decision-wheel/seo.astro +16 -0
  37. package/src/tool/decision-wheel/types.ts +14 -0
  38. package/src/tool/decision-wheel/ui.ts +121 -0
  39. package/src/tool/fantasy-runes-translator/bibliography.astro +16 -0
  40. package/src/tool/fantasy-runes-translator/bibliography.ts +16 -0
  41. package/src/tool/fantasy-runes-translator/client.ts +205 -0
  42. package/src/tool/fantasy-runes-translator/component.astro +95 -0
  43. package/src/tool/fantasy-runes-translator/entry.ts +56 -0
  44. package/src/tool/fantasy-runes-translator/fantasy-runes-translator.css +712 -0
  45. package/src/tool/fantasy-runes-translator/i18n/de.ts +139 -0
  46. package/src/tool/fantasy-runes-translator/i18n/en.ts +139 -0
  47. package/src/tool/fantasy-runes-translator/i18n/es.ts +139 -0
  48. package/src/tool/fantasy-runes-translator/i18n/fr.ts +139 -0
  49. package/src/tool/fantasy-runes-translator/i18n/id.ts +139 -0
  50. package/src/tool/fantasy-runes-translator/i18n/it.ts +139 -0
  51. package/src/tool/fantasy-runes-translator/i18n/ja.ts +139 -0
  52. package/src/tool/fantasy-runes-translator/i18n/ko.ts +139 -0
  53. package/src/tool/fantasy-runes-translator/i18n/nl.ts +139 -0
  54. package/src/tool/fantasy-runes-translator/i18n/pl.ts +139 -0
  55. package/src/tool/fantasy-runes-translator/i18n/pt.ts +139 -0
  56. package/src/tool/fantasy-runes-translator/i18n/ru.ts +139 -0
  57. package/src/tool/fantasy-runes-translator/i18n/sv.ts +139 -0
  58. package/src/tool/fantasy-runes-translator/i18n/tr.ts +139 -0
  59. package/src/tool/fantasy-runes-translator/i18n/zh.ts +139 -0
  60. package/src/tool/fantasy-runes-translator/index.ts +9 -0
  61. package/src/tool/fantasy-runes-translator/logic.ts +174 -0
  62. package/src/tool/fantasy-runes-translator/seo.astro +16 -0
  63. package/src/tool/fantasy-runes-translator/types.ts +26 -0
  64. package/src/tool/investigation-board/bibliography.astro +16 -0
  65. package/src/tool/investigation-board/bibliography.ts +12 -0
  66. package/src/tool/investigation-board/boardContextMenu.ts +64 -0
  67. package/src/tool/investigation-board/client.ts +223 -0
  68. package/src/tool/investigation-board/component.astro +23 -0
  69. package/src/tool/investigation-board/components/BoardCanvas.astro +39 -0
  70. package/src/tool/investigation-board/components/CardDrawer.astro +73 -0
  71. package/src/tool/investigation-board/components/ConnectionModal.astro +49 -0
  72. package/src/tool/investigation-board/components/ContextMenu.astro +26 -0
  73. package/src/tool/investigation-board/components/ControlPanel.astro +57 -0
  74. package/src/tool/investigation-board/connectionModal.ts +60 -0
  75. package/src/tool/investigation-board/dom.ts +89 -0
  76. package/src/tool/investigation-board/drawer.ts +110 -0
  77. package/src/tool/investigation-board/entry.ts +59 -0
  78. package/src/tool/investigation-board/i18n/de.ts +126 -0
  79. package/src/tool/investigation-board/i18n/en.ts +127 -0
  80. package/src/tool/investigation-board/i18n/es.ts +126 -0
  81. package/src/tool/investigation-board/i18n/fr.ts +126 -0
  82. package/src/tool/investigation-board/i18n/id.ts +126 -0
  83. package/src/tool/investigation-board/i18n/it.ts +126 -0
  84. package/src/tool/investigation-board/i18n/ja.ts +126 -0
  85. package/src/tool/investigation-board/i18n/ko.ts +126 -0
  86. package/src/tool/investigation-board/i18n/nl.ts +126 -0
  87. package/src/tool/investigation-board/i18n/pl.ts +126 -0
  88. package/src/tool/investigation-board/i18n/pt.ts +126 -0
  89. package/src/tool/investigation-board/i18n/ru.ts +126 -0
  90. package/src/tool/investigation-board/i18n/sv.ts +126 -0
  91. package/src/tool/investigation-board/i18n/tr.ts +126 -0
  92. package/src/tool/investigation-board/i18n/zh.ts +126 -0
  93. package/src/tool/investigation-board/index.ts +11 -0
  94. package/src/tool/investigation-board/interactDrag.ts +58 -0
  95. package/src/tool/investigation-board/investigation-board.css +799 -0
  96. package/src/tool/investigation-board/layout.ts +16 -0
  97. package/src/tool/investigation-board/logic.test.ts +105 -0
  98. package/src/tool/investigation-board/logic.ts +106 -0
  99. package/src/tool/investigation-board/panzoom.ts +24 -0
  100. package/src/tool/investigation-board/renderer.ts +256 -0
  101. package/src/tool/investigation-board/seo.astro +16 -0
  102. package/src/tool/investigation-board/stateManager.ts +126 -0
  103. package/src/tool/investigation-board/types.ts +26 -0
  104. package/src/tool/rpg-initiative-tracker/bibliography.astro +16 -0
  105. package/src/tool/rpg-initiative-tracker/bibliography.ts +12 -0
  106. package/src/tool/rpg-initiative-tracker/client.ts +201 -0
  107. package/src/tool/rpg-initiative-tracker/component.astro +23 -0
  108. package/src/tool/rpg-initiative-tracker/components/AddForm.astro +49 -0
  109. package/src/tool/rpg-initiative-tracker/components/CombatantList.astro +16 -0
  110. package/src/tool/rpg-initiative-tracker/components/TurnControls.astro +28 -0
  111. package/src/tool/rpg-initiative-tracker/entry.ts +50 -0
  112. package/src/tool/rpg-initiative-tracker/i18n/de.ts +266 -0
  113. package/src/tool/rpg-initiative-tracker/i18n/en.ts +263 -0
  114. package/src/tool/rpg-initiative-tracker/i18n/es.ts +264 -0
  115. package/src/tool/rpg-initiative-tracker/i18n/fr.ts +263 -0
  116. package/src/tool/rpg-initiative-tracker/i18n/id.ts +263 -0
  117. package/src/tool/rpg-initiative-tracker/i18n/it.ts +263 -0
  118. package/src/tool/rpg-initiative-tracker/i18n/ja.ts +263 -0
  119. package/src/tool/rpg-initiative-tracker/i18n/ko.ts +263 -0
  120. package/src/tool/rpg-initiative-tracker/i18n/nl.ts +263 -0
  121. package/src/tool/rpg-initiative-tracker/i18n/pl.ts +264 -0
  122. package/src/tool/rpg-initiative-tracker/i18n/pt.ts +263 -0
  123. package/src/tool/rpg-initiative-tracker/i18n/ru.ts +264 -0
  124. package/src/tool/rpg-initiative-tracker/i18n/sv.ts +263 -0
  125. package/src/tool/rpg-initiative-tracker/i18n/tr.ts +263 -0
  126. package/src/tool/rpg-initiative-tracker/i18n/zh.ts +263 -0
  127. package/src/tool/rpg-initiative-tracker/index.ts +9 -0
  128. package/src/tool/rpg-initiative-tracker/logic.test.ts +121 -0
  129. package/src/tool/rpg-initiative-tracker/logic.ts +122 -0
  130. package/src/tool/rpg-initiative-tracker/rpg-initiative-tracker.css +617 -0
  131. package/src/tool/rpg-initiative-tracker/seo.astro +16 -0
  132. package/src/tool/rpg-initiative-tracker/types.ts +15 -0
  133. package/src/tool/score-tracker/bibliography.astro +16 -0
  134. package/src/tool/score-tracker/bibliography.ts +12 -0
  135. package/src/tool/score-tracker/client.ts +248 -0
  136. package/src/tool/score-tracker/component.astro +34 -0
  137. package/src/tool/score-tracker/components/Leaderboard.astro +19 -0
  138. package/src/tool/score-tracker/components/PlayerSetup.astro +32 -0
  139. package/src/tool/score-tracker/components/RoundScoring.astro +22 -0
  140. package/src/tool/score-tracker/components/ScoreHistory.astro +25 -0
  141. package/src/tool/score-tracker/entry.ts +57 -0
  142. package/src/tool/score-tracker/i18n/de.ts +278 -0
  143. package/src/tool/score-tracker/i18n/en.ts +278 -0
  144. package/src/tool/score-tracker/i18n/es.ts +251 -0
  145. package/src/tool/score-tracker/i18n/fr.ts +278 -0
  146. package/src/tool/score-tracker/i18n/id.ts +278 -0
  147. package/src/tool/score-tracker/i18n/it.ts +278 -0
  148. package/src/tool/score-tracker/i18n/ja.ts +278 -0
  149. package/src/tool/score-tracker/i18n/ko.ts +278 -0
  150. package/src/tool/score-tracker/i18n/nl.ts +278 -0
  151. package/src/tool/score-tracker/i18n/pl.ts +278 -0
  152. package/src/tool/score-tracker/i18n/pt.ts +278 -0
  153. package/src/tool/score-tracker/i18n/ru.ts +278 -0
  154. package/src/tool/score-tracker/i18n/sv.ts +278 -0
  155. package/src/tool/score-tracker/i18n/tr.ts +278 -0
  156. package/src/tool/score-tracker/i18n/zh.ts +278 -0
  157. package/src/tool/score-tracker/index.ts +9 -0
  158. package/src/tool/score-tracker/logic.test.ts +83 -0
  159. package/src/tool/score-tracker/logic.ts +122 -0
  160. package/src/tool/score-tracker/score-tracker.css +1029 -0
  161. package/src/tool/score-tracker/seo.astro +16 -0
  162. package/src/tool/score-tracker/types.ts +17 -0
  163. package/src/tools.ts +11 -0
@@ -0,0 +1,263 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { InitiativeTrackerUI } from '../entry';
4
+
5
+ const ui: InitiativeTrackerUI = {
6
+ title: 'Suivi d\'Initiative',
7
+ addCombatant: 'Ajouter un combattant',
8
+ removeCombatant: 'Retirer',
9
+ playerLabel: 'Joueur',
10
+ npcLabel: 'PNJ',
11
+ initiativeLabel: 'Initiative',
12
+ modifierLabel: 'Modificateur',
13
+ namePlaceholder: 'Nom du personnage',
14
+ initiativePlaceholder: 'Initiative',
15
+ modifierPlaceholder: 'Modificateur',
16
+ addButton: 'Ajouter',
17
+ startCombat: 'Commencer le combat',
18
+ endCombat: 'Terminer le combat',
19
+ nextTurn: 'Tour suivant',
20
+ prevTurn: 'Tour précédent',
21
+ roundLabel: 'Round',
22
+ turnLabel: 'Tour',
23
+ noCombatants: 'Pas encore de combattants. Ajoutez des personnages pour commencer.',
24
+ statusInput: 'Statut',
25
+ combatStarted: 'Combat commencé !',
26
+ combatEnded: 'Combat terminé',
27
+ yourTurn: 'Tour',
28
+ };
29
+
30
+ export const content: ToolLocaleContent<InitiativeTrackerUI> = {
31
+ slug: 'suivi-initiative',
32
+ title: 'Suivi d\'Initiative RPG : Ordre des Tours & Gestionnaire d\'Initiative',
33
+ description: 'Suivez l\'ordre d\'initiative pour tout RPG de table. Ajoutez des combattants, lancez l\'initiative, gérez les effets de statut et naviguez dans les tours de combat.',
34
+ ui,
35
+ seo: [
36
+ { type: 'title', text: 'Comment fonctionne l\'Initiative dans D&D et autres RPG de table', level: 2 },
37
+ { type: 'paragraph', html: 'L\'initiative détermine l\'ordre des actions au combat. Chaque participant effectue un jet de Dextérité au début du combat, et l\'ordre des tours va du plus élevé au plus bas. Un suivi d\'initiative numérique automatise le tri, met en évidence le combattant actif, suit les effets de statut en cours et tient toute la table informée du prochain tour. C\'est particulièrement utile pour les Maîtres du Donjon qui gèrent des rencontres complexes avec plusieurs types d\'ennemis et personnages joueurs.' },
38
+ {
39
+ type: 'stats',
40
+ items: [
41
+ { value: 'Illimité', label: 'Combattants supportés' },
42
+ { value: 'Tri auto', label: 'Par jet d\'initiative' },
43
+ { value: 'Temps réel', label: 'Suivi des tours' },
44
+ ],
45
+ columns: 3,
46
+ },
47
+ { type: 'title', text: 'Règles d\'Initiative Standard pour D&D 5e', level: 2 },
48
+ { type: 'paragraph', html: 'Dans D&D 5e, chaque participant effectue un jet de Dextérité au début du combat. Les joueurs lancent individuellement. Le Maître du Donjon lance une fois pour chaque groupe de monstres identiques. L\'ordre des tours va du plus élevé au plus bas, puis revient au début pour le round suivant. Les égalités sont départagées par le score de Dextérité, ou le MD décide. Un suivi numérique gère tout cela automatiquement et affiche l\'ordre complet des tours en un coup d\'œil.' },
49
+ {
50
+ type: 'table',
51
+ headers: ['Fonctionnalité', 'Suivi manuel', 'Suivi numérique'],
52
+ rows: [
53
+ ['Tri', 'Réécrire la liste quand l\'initiative change', 'Réorganisation automatique instantanée'],
54
+ ['Tour actuel', 'Doit être suivi verbalement ou avec un pion', 'Mis en évidence avec un halo vert'],
55
+ ['Effets de statut', 'Bloc-notes séparé ou dé près du mini', 'Cliquer pour activer sur chaque combattant'],
56
+ ['Compteur de rounds', 'Compter dans sa tête ou sur un brouillon', 'Affiché automatiquement'],
57
+ ['Ajout en cours de combat', 'Effacer et réécrire l\'ordre', 'Inséré à la bonne position'],
58
+ ],
59
+ },
60
+ {
61
+ type: 'tip',
62
+ title: 'Conseils pour gérer l\'Initiative à la table',
63
+ html: 'Lancez l\'initiative pour tous les monstres avant la session pour gagner du temps pendant le combat. Ajoutez des effets de statut courants comme Étourdi ou Empoisonné à un combattant dès qu\'ils sont appliqués. Cela évite d\'oublier un état quand le personnage affecté joue son tour. Utilisez le bouton Tour précédent pour revoir ce qui s\'est passé si vous devez vérifier une règle plus tôt dans le round.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'Effets de Statut Courants au Combat',
68
+ level: 3,
69
+ },
70
+ { type: 'paragraph', html: 'Le suivi des états pendant le combat est l\'une des tâches les plus souvent négligées. Un effet de statut peut complètement changer l\'efficacité d\'un personnage, et oublier de le retirer peut faire basculer l\'équilibre d\'une rencontre. Le suivi d\'initiative vous permet d\'appliquer et de retirer des états en un seul clic pour qu\'ils restent visibles à côté du nom du combattant.' },
71
+ {
72
+ type: 'proscons',
73
+ title: 'Gestion numérique vs manuelle des effets de statut',
74
+ items: [
75
+ {
76
+ pro: 'Les états sont visibles juste à côté du nom du personnage, donc personne n\'oublie un effet actif.',
77
+ con: 'Nécessite de penser à activer et désactiver les statuts au fur et à mesure.',
78
+ },
79
+ {
80
+ pro: 'Plusieurs statuts peuvent être actifs sur le même combattant et sont tous affichés ensemble.',
81
+ con: 'Le suivi n\'applique pas automatiquement les effets des règles, le MD doit toujours les gérer.',
82
+ },
83
+ {
84
+ pro: 'Les statuts peuvent être ajoutés en plein combat sans s\'arrêter pour écrire sur une feuille de personnage.',
85
+ con: 'Seules les étiquettes de statut prédéfinies sont disponibles par défaut.',
86
+ },
87
+ ],
88
+ },
89
+ {
90
+ type: 'title',
91
+ text: 'Systèmes d\'Initiative Alternatifs',
92
+ level: 3,
93
+ },
94
+ {
95
+ type: 'comparative',
96
+ items: [
97
+ {
98
+ title: 'Initiative Standard',
99
+ description: 'Chaque combattant lance une fois au début. Le même ordre se répète chaque round. Simple et prévisible, mais l\'ordre est fixe après le premier jet. Fonctionne bien pour la plupart des groupes et tailles de rencontres.',
100
+ icon: 'mdi:swap-vertical',
101
+ highlight: true,
102
+ points: ['Simple à apprendre et enseigner', 'Ordre fixe des tours chaque round', 'Fonctionne pour tout groupe'],
103
+ },
104
+ {
105
+ title: 'Initiative de Camp',
106
+ description: 'Tous les personnages joueurs agissent ensemble, puis tous les ennemis ensemble. Courant dans les éditions plus anciennes et les jeux OSR. Accélère le combat en réduisant le suivi individuel mais réduit la nuance tactique.',
107
+ icon: 'mdi:account-group',
108
+ highlight: false,
109
+ points: ['Résolution de combat la plus rapide', 'Favorise la coordination du groupe', 'Moins de variété de tours individuels'],
110
+ },
111
+ {
112
+ title: 'Variante Facteur de Vitesse',
113
+ description: 'Chaque round, les participants déclarent d\'abord leurs actions, puis lancent l\'initiative modifiée par l\'action choisie. Utilisé dans des ensembles de règles optionnelles. Crée un ordre de tour imprévisible mais ajoute de la profondeur à la prise de décision.',
114
+ icon: 'mdi:run-fast',
115
+ highlight: false,
116
+ points: ['Ordre différent à chaque round', 'Le choix de l\'action affecte le timing', 'Plus de décisions tactiques par tour'],
117
+ },
118
+ ],
119
+ columns: 3,
120
+ },
121
+ {
122
+ type: 'title',
123
+ text: 'Glossaire du Suivi de Combat',
124
+ level: 3,
125
+ },
126
+ {
127
+ type: 'glossary',
128
+ items: [
129
+ {
130
+ term: 'Initiative',
131
+ definition: 'Un jet de Dextérité effectué au début du combat pour déterminer la séquence des tours. Chaque participant lance les dés et agit par ordre décroissant.',
132
+ },
133
+ {
134
+ term: 'Round',
135
+ definition: 'Un cycle complet où chaque combattant joue un tour. Après le dernier combattant, le round se termine et un nouveau round commence depuis le début de l\'ordre.',
136
+ },
137
+ {
138
+ term: 'Effet de Statut',
139
+ definition: 'Un état temporaire qui modifie les capacités d\'un personnage. Exemples : Étourdi (ne peut pas agir), Empoisonné (désavantage aux jets), et Aveuglé (attaques désavantagées).',
140
+ },
141
+ {
142
+ term: 'PNJ',
143
+ definition: 'Personnage Non Joueur contrôlé par le Maître du Donjon. Dans le suivi d\'initiative, les PNJ sont généralement des ennemis ou des créatures neutres dans la rencontre.',
144
+ },
145
+ {
146
+ term: 'PJ',
147
+ definition: 'Personnage Joueur contrôlé par l\'un des joueurs à la table. Les PJ sont distincts des PNJ dans le suivi pour aider le MD à identifier les cibles alliées.',
148
+ },
149
+ ],
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: 'Quand relancer l\'Initiative chaque round',
155
+ icon: 'mdi:information-outline',
156
+ badge: 'CONSEIL MD',
157
+ html: 'Certains MD préfèrent relancer l\'initiative chaque round pour plus d\'imprévisibilité, tandis que la plupart gardent le même ordre par simplicité. Si un nouveau combattant rejoint la mêlée, lancez son initiative et insérez-le à la position actuelle. Le suivi gère cela automatiquement. Pour les rencontres de boss, envisagez de donner au vilain une initiative fixe à un compte précis pour rendre le combat plus structuré.',
158
+ },
159
+ ],
160
+ faq: [
161
+ {
162
+ question: 'Comment ajouter des combattants à l\'ordre d\'initiative ?',
163
+ answer: 'Entrez le nom du personnage, le jet d\'initiative et le modificateur d\'initiative, puis cliquez sur Ajouter. Alternez entre les types Joueur et PNJ pour distinguer visuellement les membres du groupe des ennemis dans la liste.',
164
+ },
165
+ {
166
+ question: 'Que se passe-t-il quand je clique sur Commencer le combat ?',
167
+ answer: 'Tous les combattants sont triés par initiative du plus élevé au plus bas. L\'ordre des tours commence en haut, le compteur de rounds démarre à 1, et le combattant actif est mis en évidence avec un halo vert.',
168
+ },
169
+ {
170
+ question: 'Comment suivre les effets de statut pendant le combat ?',
171
+ answer: 'Cliquez sur une étiquette de statut (Étourdi, Empoisonné, Aveuglé, etc.) pour l\'activer ou la désactiver pour le combattant sélectionné. Les statuts actifs apparaissent à côté du nom du personnage. Cela rappelle à tout le monde les effets en cours quand le tour de ce combattant arrive.',
172
+ },
173
+ {
174
+ question: 'Mes données de combat persistent-elles si je rafraîchis la page ?',
175
+ answer: 'Oui. Le suivi d\'initiative sauvegarde l\'état du combat dans le stockage local de votre navigateur. Vos combattants, l\'ordre des tours et les effets de statut restent après un rechargement. Les données sont effacées quand vous cliquez sur Terminer le combat.',
176
+ },
177
+ {
178
+ question: 'Puis-je revenir au tour précédent ?',
179
+ answer: 'Oui. Le bouton Tour précédent vous permet de naviguer en arrière dans l\'ordre des tours. C\'est utile pour revoir ce qui s\'est passé plus tôt dans le round ou corriger une erreur.',
180
+ },
181
+ {
182
+ question: 'Puis-je ajouter ou retirer des combattants pendant le combat ?',
183
+ answer: 'Oui. De nouveaux combattants peuvent être ajoutés à tout moment et sont automatiquement insérés à la bonne position selon leur jet d\'initiative. Les combattants existants peuvent être retirés s\'ils quittent la rencontre.',
184
+ },
185
+ {
186
+ question: 'Cela fonctionne-t-il avec n\'importe quel système de RPG ?',
187
+ answer: 'Oui. Le suivi fonctionne avec tout RPG de table qui utilise un ordre de tour basé sur l\'initiative. Entrez simplement les valeurs d\'initiative que votre système utilise, que ce soit un jet de d20 plus Dex pour D&D ou une mécanique différente pour d\'autres jeux.',
188
+ },
189
+ ],
190
+ bibliography,
191
+ howTo: [
192
+ {
193
+ name: 'Ajouter des combattants avant le combat',
194
+ text: 'Entrez le nom de chaque personnage, son jet d\'initiative et son modificateur. Marquez-les comme Joueur ou PNJ. Ajoutez autant de combattants que votre rencontre le nécessite.',
195
+ },
196
+ {
197
+ name: 'Commencer le combat pour verrouiller l\'ordre',
198
+ text: 'Cliquez sur Commencer le combat pour trier tout le monde par initiative et démarrer le suivi des tours. Le premier combattant dans l\'ordre est mis en évidence.',
199
+ },
200
+ {
201
+ name: 'Naviguer entre les tours et suivre les états',
202
+ text: 'Utilisez Tour suivant et Tour précédent pour vous déplacer dans l\'ordre. Appliquez des effets de statut en cliquant sur les étiquettes de statut pour suivre les états pendant le combat.',
203
+ },
204
+ {
205
+ name: 'Terminer le combat quand c\'est fini',
206
+ text: 'Cliquez sur Terminer le combat pour arrêter le suivi des tours. Cela efface l\'état actif et réinitialise le compteur de rounds tout en conservant la liste des combattants pour la prochaine rencontre.',
207
+ },
208
+ ],
209
+ schemas: [
210
+ {
211
+ '@context': 'https://schema.org',
212
+ '@type': 'SoftwareApplication',
213
+ 'name': 'Suivi d\'Initiative RPG',
214
+ 'operatingSystem': 'Tous',
215
+ 'applicationCategory': 'UtilitiesApplication',
216
+ 'browserRequirements': 'Nécessite HTML5. Nécessite JavaScript.',
217
+ },
218
+ {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'FAQPage',
221
+ 'mainEntity': [
222
+ {
223
+ '@type': 'Question',
224
+ 'name': 'Comment ajouter des combattants ?',
225
+ 'acceptedAnswer': {
226
+ '@type': 'Answer',
227
+ 'text': 'Entrez le nom du personnage, le jet d\'initiative et le modificateur d\'initiative, puis cliquez sur Ajouter. Joueurs et PNJ peuvent être basculés pour les distinguer dans la liste.',
228
+ },
229
+ },
230
+ {
231
+ '@type': 'Question',
232
+ 'name': 'Que se passe-t-il quand je clique sur Commencer le combat ?',
233
+ 'acceptedAnswer': {
234
+ '@type': 'Answer',
235
+ 'text': 'Tous les combattants sont triés par initiative (plus élevé d\'abord). L\'ordre des tours commence avec le premier combattant et un compteur de rounds démarre à 1.',
236
+ },
237
+ },
238
+ ],
239
+ },
240
+ {
241
+ '@context': 'https://schema.org',
242
+ '@type': 'HowTo',
243
+ 'name': 'Comment utiliser le Suivi d\'Initiative',
244
+ 'step': [
245
+ {
246
+ '@type': 'HowToStep',
247
+ 'name': 'Ajouter des combattants',
248
+ 'text': 'Entrez les détails du personnage : nom, jet d\'initiative et modificateur. Basculez entre Joueur et PNJ avant d\'ajouter.',
249
+ },
250
+ {
251
+ '@type': 'HowToStep',
252
+ 'name': 'Commencer le combat',
253
+ 'text': 'Cliquez sur Commencer le combat pour trier tous les combattants par initiative et démarrer le suivi de l\'ordre des tours.',
254
+ },
255
+ {
256
+ '@type': 'HowToStep',
257
+ 'name': 'Gérer les tours',
258
+ 'text': 'Utilisez Tour suivant et Tour précédent pour naviguer dans l\'ordre des tours. Le combattant actif est mis en évidence avec un halo vert.',
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ };
@@ -0,0 +1,263 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { InitiativeTrackerUI } from '../entry';
4
+
5
+ const ui: InitiativeTrackerUI = {
6
+ title: 'Pelacak Inisiatif',
7
+ addCombatant: 'Tambah Petarung',
8
+ removeCombatant: 'Hapus',
9
+ playerLabel: 'Pemain',
10
+ npcLabel: 'NPC',
11
+ initiativeLabel: 'Inisiatif',
12
+ modifierLabel: 'Modifier',
13
+ namePlaceholder: 'Nama karakter',
14
+ initiativePlaceholder: 'Inisiatif',
15
+ modifierPlaceholder: 'Modifier',
16
+ addButton: 'Tambah',
17
+ startCombat: 'Mulai Combat',
18
+ endCombat: 'Akhiri Combat',
19
+ nextTurn: 'Giliran Berikutnya',
20
+ prevTurn: 'Giliran Sebelumnya',
21
+ roundLabel: 'Ronel',
22
+ turnLabel: 'Giliran',
23
+ noCombatants: 'Belum ada petarung. Tambahkan karakter untuk memulai.',
24
+ statusInput: 'Status',
25
+ combatStarted: 'Combat Dimulai!',
26
+ combatEnded: 'Combat Berakhir',
27
+ yourTurn: 'Giliran',
28
+ };
29
+
30
+ export const content: ToolLocaleContent<InitiativeTrackerUI> = {
31
+ slug: 'pelacak-inisiatif',
32
+ title: 'Pelacak Inisiatif RPG: Pengatur Giliran Combat & Inisiatif',
33
+ description: 'Lacak urutan inisiatif untuk RPG meja apa pun. Tambahkan petarung, lempar inisiatif, kelola efek status, dan navigasi giliran dalam combat.',
34
+ ui,
35
+ seo: [
36
+ { type: 'title', text: 'Bagaimana Inisiatif Bekerja di D&D dan RPG Meja Lainnya', level: 2 },
37
+ { type: 'paragraph', html: 'Inisiatif menentukan urutan aksi dalam combat. Setiap peserta melakukan lemparan Dexterity di awal pertarungan, dan urutan giliran berjalan dari tertinggi ke terendah. Pelacak inisiatif digital mengotomatiskan pengurutan, menyorot petarung aktif, melacak efek status yang sedang berlangsung, dan memberi tahu seluruh meja tentang siapa yang mendapat giliran berikutnya. Ini sangat berguna bagi Dungeon Master yang menjalankan pertemuan rumit dengan banyak tipe musuh dan karakter pemain.' },
38
+ {
39
+ type: 'stats',
40
+ items: [
41
+ { value: 'Tak Terbatas', label: 'Petarung Didukung' },
42
+ { value: 'Urut Otomatis', label: 'Berdasarkan Lemparan Inisiatif' },
43
+ { value: 'Real Time', label: 'Pelacakan Giliran' },
44
+ ],
45
+ columns: 3,
46
+ },
47
+ { type: 'title', text: 'Aturan Inisiatif Standar untuk D&D 5e', level: 2 },
48
+ { type: 'paragraph', html: 'Di D&D Edisi ke-5, setiap peserta melakukan lemparan Dexterity di awal combat. Pemain melempar secara individu. Dungeon Master melempar sekali untuk setiap kelompok monster identik. Urutan giliran berjalan dari tertinggi ke terendah, lalu kembali ke atas untuk ronde berikutnya. Hasil seri diputuskan oleh skor Dexterity, atau DM yang memutuskan. Pelacak digital menangani semua ini secara otomatis dan menampilkan urutan giliran lengkap secara sekilas.' },
49
+ {
50
+ type: 'table',
51
+ headers: ['Fitur', 'Pelacakan Manual', 'Pelacak Digital'],
52
+ rows: [
53
+ ['Pengurutan', 'Tulis ulang daftar saat inisiatif berubah', 'Urut ulang instan otomatis'],
54
+ ['Giliran Saat Ini', 'Harus dilacak secara lisan atau dengan token', 'Disorot dengan cahaya hijau'],
55
+ ['Efek Status', 'Catatan terpisah atau dadu di dekat mini', 'Klik untuk mengaktifkan pada setiap petarung'],
56
+ ['Penghitungan Ronel', 'Catat di kepala atau kertas coretan', 'Ditampilkan secara otomatis'],
57
+ ['Menambah Saat Combat', 'Hapus dan tulis ulang urutan', 'Disisipkan di posisi yang benar'],
58
+ ],
59
+ },
60
+ {
61
+ type: 'tip',
62
+ title: 'Tips Menjalankan Inisiatif di Meja',
63
+ html: 'Lemparkan inisiatif untuk semua monster sebelum sesi dimulai untuk menghemat waktu selama combat. Tambahkan efek status umum seperti Stunned atau Poisoned ke petarung segera setelah diterapkan. Ini mencegah lupa tentang kondisi saat giliran karakter yang terkena tiba. Gunakan tombol Giliran Sebelumnya untuk meninjau apa yang terjadi jika Anda perlu memeriksa keputusan dari awal ronde.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'Efek Status yang Biasa Digunakan dalam Combat',
68
+ level: 3,
69
+ },
70
+ { type: 'paragraph', html: 'Melacak kondisi selama combat adalah salah satu tugas yang paling sering terlewatkan. Efek status dapat mengubah efektivitas karakter secara total, dan lupa menghapusnya dapat mengubah keseimbangan pertemuan. Pelacak inisiatif memungkinkan Anda menerapkan dan menghapus kondisi dengan satu klik sehingga tetap terlihat di samping nama petarung.' },
71
+ {
72
+ type: 'proscons',
73
+ title: 'Menangani Efek Status secara Digital vs Manual',
74
+ items: [
75
+ {
76
+ pro: 'Kondisi terlihat tepat di samping nama karakter sehingga tidak ada yang lupa efek yang aktif.',
77
+ con: 'Perlu mengingat untuk mengaktifkan dan menonaktifkan status saat diterapkan dan dihapus.',
78
+ },
79
+ {
80
+ pro: 'Beberapa status dapat aktif pada petarung yang sama dan semuanya ditampilkan bersama.',
81
+ con: 'Pelacak tidak menerapkan efek aturan secara otomatis, DM tetap menerapkannya.',
82
+ },
83
+ {
84
+ pro: 'Status dapat ditambahkan di tengah combat tanpa berhenti untuk menulis di lembar karakter.',
85
+ con: 'Hanya tag status yang telah ditentukan yang tersedia secara bawaan.',
86
+ },
87
+ ],
88
+ },
89
+ {
90
+ type: 'title',
91
+ text: 'Sistem Inisiatif Alternatif',
92
+ level: 3,
93
+ },
94
+ {
95
+ type: 'comparative',
96
+ items: [
97
+ {
98
+ title: 'Inisiatif Standar',
99
+ description: 'Setiap petarung melempar sekali di awal. Urutan yang sama berulang setiap ronde. Sederhana dan dapat diprediksi, tetapi urutan tetap setelah lemparan pertama. Berfungsi baik untuk sebagian besar grup dan ukuran pertemuan.',
100
+ icon: 'mdi:swap-vertical',
101
+ highlight: true,
102
+ points: ['Mudah dipelajari dan diajarkan', 'Urutan giliran tetap setiap ronde', 'Berfungsi untuk ukuran grup apa pun'],
103
+ },
104
+ {
105
+ title: 'Inisiatif Sisi',
106
+ description: 'Semua karakter pemain bertindak bersama, lalu semua musuh bertindak bersama. Umum di edisi lama dan game OSR. Mempercepat combat dengan mengurangi pelacakan individual tetapi mengurangi nuansa taktis.',
107
+ icon: 'mdi:account-group',
108
+ highlight: false,
109
+ points: ['Resolusi combat tercepat', 'Mendorong koordinasi kelompok', 'Variasi giliran individu lebih sedikit'],
110
+ },
111
+ {
112
+ title: 'Varian Faktor Kecepatan',
113
+ description: 'Setiap ronde peserta menyatakan aksi terlebih dahulu, kemudian melempar inisiatif yang dimodifikasi oleh aksi yang dipilih. Digunakan dalam aturan opsional. Menciptakan urutan giliran yang tidak terduga tetapi menambah kedalaman pengambilan keputusan.',
114
+ icon: 'mdi:run-fast',
115
+ highlight: false,
116
+ points: ['Urutan berbeda setiap ronde', 'Pilihan aksi memengaruhi waktu', 'Lebih banyak keputusan taktis per giliran'],
117
+ },
118
+ ],
119
+ columns: 3,
120
+ },
121
+ {
122
+ type: 'title',
123
+ text: 'Glosarium Pelacak Combat',
124
+ level: 3,
125
+ },
126
+ {
127
+ type: 'glossary',
128
+ items: [
129
+ {
130
+ term: 'Inisiatif',
131
+ definition: 'Lemparan Dexterity yang dilakukan di awal combat untuk menentukan urutan giliran. Setiap peserta melempar dan bertindak dalam urutan menurun.',
132
+ },
133
+ {
134
+ term: 'Ronel',
135
+ definition: 'Siklus lengkap di mana setiap petarung mengambil satu giliran. Setelah petarung terakhir bertindak, ronde berakhir dan ronde baru dimulai dari atas urutan.',
136
+ },
137
+ {
138
+ term: 'Efek Status',
139
+ definition: 'Kondisi sementara yang mengubah kemampuan karakter. Contohnya termasuk Stunned (tidak bisa bertindak), Poisoned (kerugian pada lemparan), dan Blinded (serangan memiliki kerugian).',
140
+ },
141
+ {
142
+ term: 'NPC',
143
+ definition: 'Karakter Non-Pemain yang dikendalikan oleh Dungeon Master. Dalam pelacakan inisiatif, NPC biasanya adalah musuh atau makhluk netral dalam pertemuan.',
144
+ },
145
+ {
146
+ term: 'PC',
147
+ definition: 'Karakter Pemain yang dikendalikan oleh salah satu pemain di meja. PC dibedakan dari NPC di pelacak untuk membantu DM mengidentifikasi target ramah.',
148
+ },
149
+ ],
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: 'Kapan Harus Melempar Ulang Inisiatif Setiap Ronde',
155
+ icon: 'mdi:information-outline',
156
+ badge: 'TIP DM',
157
+ html: 'Beberapa DM lebih suka melempar ulang inisiatif setiap ronde untuk ketidakpastian, sementara kebanyakan mempertahankan urutan yang sama untuk kesederhanaan. Jika petarung baru bergabung di tengah pertarungan, lempar inisiatif mereka dan masukkan ke posisi saat ini. Pelacak menangani ini secara otomatis. Untuk pertemuan bos, pertimbangkan memberi penjahat inisiatif tetap pada hitungan tertentu untuk membuat pertarungan terasa lebih terstruktur.',
158
+ },
159
+ ],
160
+ faq: [
161
+ {
162
+ question: 'Bagaimana cara menambahkan petarung ke urutan inisiatif?',
163
+ answer: 'Masukkan nama karakter, lemparan inisiatif, dan modifier inisiatif, lalu klik Tambah. Beralih antara tipe Pemain dan NPC untuk membedakan anggota party dari musuh dalam daftar secara visual.',
164
+ },
165
+ {
166
+ question: 'Apa yang terjadi saat saya mengklik Mulai Combat?',
167
+ answer: 'Semua petarung diurutkan berdasarkan inisiatif dari tertinggi ke terendah. Urutan giliran dimulai dari atas, penghitung ronde mulai dari 1, dan petarung aktif disorot dengan cahaya hijau.',
168
+ },
169
+ {
170
+ question: 'Bagaimana cara melacak efek status selama combat?',
171
+ answer: 'Klik tag status (Stunned, Poisoned, Blinded, dll.) untuk mengaktifkan atau menonaktifkannya pada petarung yang dipilih. Status aktif muncul di samping nama karakter. Ini mengingatkan semua orang tentang efek yang berlangsung saat giliran petarung tersebut tiba.',
172
+ },
173
+ {
174
+ question: 'Apakah data combat saya tetap ada jika saya menyegarkan halaman?',
175
+ answer: 'Ya. Pelacak inisiatif menyimpan status combat ke penyimpanan lokal browser Anda. Petarung, urutan giliran, dan efek status Anda tetap ada setelah halaman dimuat ulang. Data dihapus saat Anda mengklik Akhiri Combat.',
176
+ },
177
+ {
178
+ question: 'Bisakah saya kembali ke giliran sebelumnya?',
179
+ answer: 'Ya. Tombol Giliran Sebelumnya memungkinkan Anda menavigasi mundur melalui urutan giliran. Ini berguna untuk meninjau apa yang terjadi sebelumnya dalam ronde atau memperbaiki kesalahan.',
180
+ },
181
+ {
182
+ question: 'Bisakah saya menambah atau menghapus petarung selama combat?',
183
+ answer: 'Ya. Petarung baru dapat ditambahkan kapan saja dan secara otomatis dimasukkan ke posisi yang benar berdasarkan lemparan inisiatif mereka. Petarung yang ada dapat dihapus jika mereka meninggalkan pertemuan.',
184
+ },
185
+ {
186
+ question: 'Apakah ini berfungsi dengan sistem RPG apa pun?',
187
+ answer: 'Ya. Pelacak berfungsi dengan RPG meja apa pun yang menggunakan urutan giliran berbasis inisiatif. Masukkan nilai inisiatif apa pun yang digunakan sistem Anda, apakah itu lemparan d20 plus Dex untuk D&D atau mekanik berbeda untuk game lain.',
188
+ },
189
+ ],
190
+ bibliography,
191
+ howTo: [
192
+ {
193
+ name: 'Tambahkan Petarung Sebelum Combat',
194
+ text: 'Masukkan nama setiap karakter, lemparan inisiatif mereka, dan modifier. Tandai sebagai Pemain atau NPC. Tambahkan petarung sebanyak yang dibutuhkan pertemuan Anda.',
195
+ },
196
+ {
197
+ name: 'Mulai Combat untuk Mengunci Urutan',
198
+ text: 'Klik Mulai Combat untuk mengurutkan semua orang berdasarkan inisiatif dan mulai melacak giliran. Petarung pertama dalam urutan disorot.',
199
+ },
200
+ {
201
+ name: 'Navigasi Giliran dan Lacak Kondisi',
202
+ text: 'Gunakan Giliran Berikutnya dan Giliran Sebelumnya untuk bergerak melalui urutan. Terapkan efek status dengan mengklik tag status untuk melacak kondisi selama pertarungan.',
203
+ },
204
+ {
205
+ name: 'Akhiri Combat Setelah Selesai',
206
+ text: 'Klik Akhiri Combat untuk menghentikan pelacakan giliran. Ini membersihkan status aktif dan mereset penghitung ronde sambil mempertahankan daftar petarung untuk pertemuan berikutnya.',
207
+ },
208
+ ],
209
+ schemas: [
210
+ {
211
+ '@context': 'https://schema.org',
212
+ '@type': 'SoftwareApplication',
213
+ 'name': 'Pelacak Inisiatif RPG',
214
+ 'operatingSystem': 'Semua',
215
+ 'applicationCategory': 'UtilitiesApplication',
216
+ 'browserRequirements': 'Memerlukan HTML5. Memerlukan JavaScript.',
217
+ },
218
+ {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'FAQPage',
221
+ 'mainEntity': [
222
+ {
223
+ '@type': 'Question',
224
+ 'name': 'Bagaimana cara menambahkan petarung?',
225
+ 'acceptedAnswer': {
226
+ '@type': 'Answer',
227
+ 'text': 'Masukkan nama karakter, lemparan inisiatif, dan modifier inisiatif, lalu klik Tambah. Pemain dan NPC dapat dialihkan untuk membantu membedakannya dalam daftar.',
228
+ },
229
+ },
230
+ {
231
+ '@type': 'Question',
232
+ 'name': 'Apa yang terjadi saat saya mengklik Mulai Combat?',
233
+ 'acceptedAnswer': {
234
+ '@type': 'Answer',
235
+ 'text': 'Semua petarung diurutkan berdasarkan inisiatif (tertinggi pertama). Urutan giliran dimulai dengan petarung pertama dan penghitung ronde mulai dari 1.',
236
+ },
237
+ },
238
+ ],
239
+ },
240
+ {
241
+ '@context': 'https://schema.org',
242
+ '@type': 'HowTo',
243
+ 'name': 'Cara Menggunakan Pelacak Inisiatif',
244
+ 'step': [
245
+ {
246
+ '@type': 'HowToStep',
247
+ 'name': 'Tambahkan Petarung',
248
+ 'text': 'Masukkan detail karakter termasuk nama, lemparan inisiatif, dan modifier. Beralih antara tipe Pemain dan NPC sebelum menambahkan.',
249
+ },
250
+ {
251
+ '@type': 'HowToStep',
252
+ 'name': 'Mulai Combat',
253
+ 'text': 'Klik Mulai Combat untuk mengurutkan semua petarung berdasarkan inisiatif dan mulai pelacakan urutan giliran.',
254
+ },
255
+ {
256
+ '@type': 'HowToStep',
257
+ 'name': 'Kelola Giliran',
258
+ 'text': 'Gunakan Giliran Berikutnya dan Giliran Sebelumnya untuk menavigasi urutan giliran. Petarung aktif disorot dengan cahaya hijau.',
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ };