@jjlmoya/utils-tabletop 1.3.0 → 1.5.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 (171) hide show
  1. package/package.json +1 -1
  2. package/src/category/TabletopCategorySEO.astro +2 -7
  3. package/src/category/i18n/en.ts +4 -4
  4. package/src/category/i18n/ru.ts +2 -2
  5. package/src/category/i18n/zh.ts +8 -8
  6. package/src/category/index.ts +2 -1
  7. package/src/entries.ts +14 -1
  8. package/src/index.ts +1 -0
  9. package/src/pages/[locale]/[slug].astro +7 -6
  10. package/src/tests/locale_completeness.test.ts +1 -1
  11. package/src/tests/no_em_dash.test.ts +47 -0
  12. package/src/tests/seo_length.test.ts +1 -0
  13. package/src/tests/title_quality.test.ts +1 -1
  14. package/src/tests/tool_validation.test.ts +1 -1
  15. package/src/tool/board-game-timer/modules/ColorHelper.ts +2 -2
  16. package/src/tool/board-game-timer/modules/DuelViewManager.ts +4 -4
  17. package/src/tool/board-game-timer/modules/GameRunner.ts +1 -1
  18. package/src/tool/board-game-timer/modules/MultiplayerViewManager.ts +2 -2
  19. package/src/tool/board-game-timer/modules/SetupPanelManager.ts +1 -1
  20. package/src/tool/board-game-timer/modules/TimerEngine.ts +1 -1
  21. package/src/tool/board-game-timer/types.ts +1 -1
  22. package/src/tool/decision-wheel/audio.ts +78 -0
  23. package/src/tool/decision-wheel/bibliography.astro +16 -0
  24. package/src/tool/decision-wheel/bibliography.ts +8 -0
  25. package/src/tool/decision-wheel/client.ts +226 -0
  26. package/src/tool/decision-wheel/component.astro +48 -0
  27. package/src/tool/decision-wheel/components/SegmentEditor.astro +22 -0
  28. package/src/tool/decision-wheel/components/SpinHistory.astro +17 -0
  29. package/src/tool/decision-wheel/components/SpinResult.astro +13 -0
  30. package/src/tool/decision-wheel/components/WheelCanvas.astro +23 -0
  31. package/src/tool/decision-wheel/decision-wheel.css +632 -0
  32. package/src/tool/decision-wheel/drawing.ts +144 -0
  33. package/src/tool/decision-wheel/entry.ts +48 -0
  34. package/src/tool/decision-wheel/i18n/de.ts +97 -0
  35. package/src/tool/decision-wheel/i18n/en.ts +251 -0
  36. package/src/tool/decision-wheel/i18n/es.ts +93 -0
  37. package/src/tool/decision-wheel/i18n/fr.ts +93 -0
  38. package/src/tool/decision-wheel/i18n/id.ts +93 -0
  39. package/src/tool/decision-wheel/i18n/it.ts +93 -0
  40. package/src/tool/decision-wheel/i18n/ja.ts +93 -0
  41. package/src/tool/decision-wheel/i18n/ko.ts +93 -0
  42. package/src/tool/decision-wheel/i18n/nl.ts +93 -0
  43. package/src/tool/decision-wheel/i18n/pl.ts +93 -0
  44. package/src/tool/decision-wheel/i18n/pt.ts +93 -0
  45. package/src/tool/decision-wheel/i18n/ru.ts +75 -0
  46. package/src/tool/decision-wheel/i18n/sv.ts +93 -0
  47. package/src/tool/decision-wheel/i18n/tr.ts +93 -0
  48. package/src/tool/decision-wheel/i18n/zh.ts +93 -0
  49. package/src/tool/decision-wheel/index.ts +9 -0
  50. package/src/tool/decision-wheel/logic.test.ts +163 -0
  51. package/src/tool/decision-wheel/logic.ts +145 -0
  52. package/src/tool/decision-wheel/seo.astro +16 -0
  53. package/src/tool/decision-wheel/types.ts +14 -0
  54. package/src/tool/decision-wheel/ui.ts +121 -0
  55. package/src/tool/dice-roller-simulator/client.ts +2 -2
  56. package/src/tool/dice-roller-simulator/i18n/ru.ts +8 -8
  57. package/src/tool/dice-roller-simulator/modules/history.ts +1 -1
  58. package/src/tool/fantasy-runes-translator/bibliography.astro +16 -0
  59. package/src/tool/fantasy-runes-translator/bibliography.ts +16 -0
  60. package/src/tool/fantasy-runes-translator/client.ts +205 -0
  61. package/src/tool/fantasy-runes-translator/component.astro +95 -0
  62. package/src/tool/fantasy-runes-translator/entry.ts +56 -0
  63. package/src/tool/fantasy-runes-translator/fantasy-runes-translator.css +712 -0
  64. package/src/tool/fantasy-runes-translator/i18n/de.ts +139 -0
  65. package/src/tool/fantasy-runes-translator/i18n/en.ts +139 -0
  66. package/src/tool/fantasy-runes-translator/i18n/es.ts +139 -0
  67. package/src/tool/fantasy-runes-translator/i18n/fr.ts +139 -0
  68. package/src/tool/fantasy-runes-translator/i18n/id.ts +139 -0
  69. package/src/tool/fantasy-runes-translator/i18n/it.ts +139 -0
  70. package/src/tool/fantasy-runes-translator/i18n/ja.ts +139 -0
  71. package/src/tool/fantasy-runes-translator/i18n/ko.ts +139 -0
  72. package/src/tool/fantasy-runes-translator/i18n/nl.ts +139 -0
  73. package/src/tool/fantasy-runes-translator/i18n/pl.ts +139 -0
  74. package/src/tool/fantasy-runes-translator/i18n/pt.ts +139 -0
  75. package/src/tool/fantasy-runes-translator/i18n/ru.ts +139 -0
  76. package/src/tool/fantasy-runes-translator/i18n/sv.ts +139 -0
  77. package/src/tool/fantasy-runes-translator/i18n/tr.ts +139 -0
  78. package/src/tool/fantasy-runes-translator/i18n/zh.ts +139 -0
  79. package/src/tool/fantasy-runes-translator/index.ts +9 -0
  80. package/src/tool/fantasy-runes-translator/logic.ts +174 -0
  81. package/src/tool/fantasy-runes-translator/seo.astro +16 -0
  82. package/src/tool/fantasy-runes-translator/types.ts +26 -0
  83. package/src/tool/first-player-selector/bibliography.astro +16 -0
  84. package/src/tool/first-player-selector/bibliography.ts +12 -0
  85. package/src/tool/first-player-selector/client.ts +197 -0
  86. package/src/tool/first-player-selector/component.astro +77 -0
  87. package/src/tool/first-player-selector/entry.ts +42 -0
  88. package/src/tool/first-player-selector/first-player-selector.css +303 -0
  89. package/src/tool/first-player-selector/i18n/de.ts +226 -0
  90. package/src/tool/first-player-selector/i18n/en.ts +226 -0
  91. package/src/tool/first-player-selector/i18n/es.ts +226 -0
  92. package/src/tool/first-player-selector/i18n/fr.ts +227 -0
  93. package/src/tool/first-player-selector/i18n/id.ts +226 -0
  94. package/src/tool/first-player-selector/i18n/it.ts +227 -0
  95. package/src/tool/first-player-selector/i18n/ja.ts +227 -0
  96. package/src/tool/first-player-selector/i18n/ko.ts +227 -0
  97. package/src/tool/first-player-selector/i18n/nl.ts +226 -0
  98. package/src/tool/first-player-selector/i18n/pl.ts +227 -0
  99. package/src/tool/first-player-selector/i18n/pt.ts +226 -0
  100. package/src/tool/first-player-selector/i18n/ru.ts +227 -0
  101. package/src/tool/first-player-selector/i18n/sv.ts +226 -0
  102. package/src/tool/first-player-selector/i18n/tr.ts +226 -0
  103. package/src/tool/first-player-selector/i18n/zh.ts +227 -0
  104. package/src/tool/first-player-selector/index.ts +9 -0
  105. package/src/tool/first-player-selector/modules/AnimationEffects.ts +256 -0
  106. package/src/tool/first-player-selector/modules/SelectionEngine.ts +249 -0
  107. package/src/tool/first-player-selector/modules/SoundEffects.ts +87 -0
  108. package/src/tool/first-player-selector/modules/TouchTracker.ts +148 -0
  109. package/src/tool/first-player-selector/seo.astro +16 -0
  110. package/src/tool/first-player-selector/types.ts +21 -0
  111. package/src/tool/rpg-initiative-tracker/bibliography.astro +16 -0
  112. package/src/tool/rpg-initiative-tracker/bibliography.ts +12 -0
  113. package/src/tool/rpg-initiative-tracker/client.ts +201 -0
  114. package/src/tool/rpg-initiative-tracker/component.astro +23 -0
  115. package/src/tool/rpg-initiative-tracker/components/AddForm.astro +49 -0
  116. package/src/tool/rpg-initiative-tracker/components/CombatantList.astro +16 -0
  117. package/src/tool/rpg-initiative-tracker/components/TurnControls.astro +28 -0
  118. package/src/tool/rpg-initiative-tracker/entry.ts +50 -0
  119. package/src/tool/rpg-initiative-tracker/i18n/de.ts +266 -0
  120. package/src/tool/rpg-initiative-tracker/i18n/en.ts +263 -0
  121. package/src/tool/rpg-initiative-tracker/i18n/es.ts +264 -0
  122. package/src/tool/rpg-initiative-tracker/i18n/fr.ts +263 -0
  123. package/src/tool/rpg-initiative-tracker/i18n/id.ts +263 -0
  124. package/src/tool/rpg-initiative-tracker/i18n/it.ts +263 -0
  125. package/src/tool/rpg-initiative-tracker/i18n/ja.ts +263 -0
  126. package/src/tool/rpg-initiative-tracker/i18n/ko.ts +263 -0
  127. package/src/tool/rpg-initiative-tracker/i18n/nl.ts +263 -0
  128. package/src/tool/rpg-initiative-tracker/i18n/pl.ts +264 -0
  129. package/src/tool/rpg-initiative-tracker/i18n/pt.ts +263 -0
  130. package/src/tool/rpg-initiative-tracker/i18n/ru.ts +264 -0
  131. package/src/tool/rpg-initiative-tracker/i18n/sv.ts +263 -0
  132. package/src/tool/rpg-initiative-tracker/i18n/tr.ts +263 -0
  133. package/src/tool/rpg-initiative-tracker/i18n/zh.ts +263 -0
  134. package/src/tool/rpg-initiative-tracker/index.ts +9 -0
  135. package/src/tool/rpg-initiative-tracker/logic.test.ts +121 -0
  136. package/src/tool/rpg-initiative-tracker/logic.ts +122 -0
  137. package/src/tool/rpg-initiative-tracker/rpg-initiative-tracker.css +617 -0
  138. package/src/tool/rpg-initiative-tracker/seo.astro +16 -0
  139. package/src/tool/rpg-initiative-tracker/types.ts +15 -0
  140. package/src/tool/score-tracker/bibliography.astro +16 -0
  141. package/src/tool/score-tracker/bibliography.ts +12 -0
  142. package/src/tool/score-tracker/client.ts +248 -0
  143. package/src/tool/score-tracker/component.astro +34 -0
  144. package/src/tool/score-tracker/components/Leaderboard.astro +19 -0
  145. package/src/tool/score-tracker/components/PlayerSetup.astro +32 -0
  146. package/src/tool/score-tracker/components/RoundScoring.astro +22 -0
  147. package/src/tool/score-tracker/components/ScoreHistory.astro +25 -0
  148. package/src/tool/score-tracker/entry.ts +57 -0
  149. package/src/tool/score-tracker/i18n/de.ts +278 -0
  150. package/src/tool/score-tracker/i18n/en.ts +278 -0
  151. package/src/tool/score-tracker/i18n/es.ts +251 -0
  152. package/src/tool/score-tracker/i18n/fr.ts +278 -0
  153. package/src/tool/score-tracker/i18n/id.ts +278 -0
  154. package/src/tool/score-tracker/i18n/it.ts +278 -0
  155. package/src/tool/score-tracker/i18n/ja.ts +278 -0
  156. package/src/tool/score-tracker/i18n/ko.ts +278 -0
  157. package/src/tool/score-tracker/i18n/nl.ts +278 -0
  158. package/src/tool/score-tracker/i18n/pl.ts +278 -0
  159. package/src/tool/score-tracker/i18n/pt.ts +278 -0
  160. package/src/tool/score-tracker/i18n/ru.ts +278 -0
  161. package/src/tool/score-tracker/i18n/sv.ts +278 -0
  162. package/src/tool/score-tracker/i18n/tr.ts +278 -0
  163. package/src/tool/score-tracker/i18n/zh.ts +278 -0
  164. package/src/tool/score-tracker/index.ts +9 -0
  165. package/src/tool/score-tracker/logic.test.ts +83 -0
  166. package/src/tool/score-tracker/logic.ts +122 -0
  167. package/src/tool/score-tracker/score-tracker.css +1029 -0
  168. package/src/tool/score-tracker/seo.astro +16 -0
  169. package/src/tool/score-tracker/types.ts +17 -0
  170. package/src/tools.ts +10 -0
  171. package/src/types.ts +1 -2
@@ -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: 'Initiative Tracker',
7
+ addCombatant: 'Add Combatant',
8
+ removeCombatant: 'Remove',
9
+ playerLabel: 'Player',
10
+ npcLabel: 'NPC',
11
+ initiativeLabel: 'Initiative',
12
+ modifierLabel: 'Modifier',
13
+ namePlaceholder: 'Character name',
14
+ initiativePlaceholder: 'Initiative',
15
+ modifierPlaceholder: 'Modifier',
16
+ addButton: 'Add',
17
+ startCombat: 'Start Combat',
18
+ endCombat: 'End Combat',
19
+ nextTurn: 'Next Turn',
20
+ prevTurn: 'Previous Turn',
21
+ roundLabel: 'Round',
22
+ turnLabel: 'Turn',
23
+ noCombatants: 'No combatants yet. Add characters to begin.',
24
+ statusInput: 'Status',
25
+ combatStarted: 'Combat Started!',
26
+ combatEnded: 'Combat Ended',
27
+ yourTurn: 'Turn',
28
+ };
29
+
30
+ export const content: ToolLocaleContent<InitiativeTrackerUI> = {
31
+ slug: 'rpg-initiative-tracker',
32
+ title: 'RPG Initiative Tracker: Combat Turn Order & Initiative Manager',
33
+ description: 'Track initiative order for any tabletop RPG. Add combatants, roll initiative, manage status effects, and navigate turns in combat.',
34
+ ui,
35
+ seo: [
36
+ { type: 'title', text: 'How Initiative Works in D&D and Other Tabletop RPGs', level: 2 },
37
+ { type: 'paragraph', html: 'Initiative determines the order of actions in combat. Every participant rolls a Dexterity check at the start of a fight, and the turn order goes from highest to lowest. A digital initiative tracker automates sorting, highlights the active combatant, tracks ongoing status effects, and keeps the entire table informed about whose turn is next. This is especially useful for Dungeon Masters running complex encounters with multiple enemy types and player characters.' },
38
+ {
39
+ type: 'stats',
40
+ items: [
41
+ { value: 'Unlimited', label: 'Combatants Supported' },
42
+ { value: 'Auto Sort', label: 'By Initiative Roll' },
43
+ { value: 'Real Time', label: 'Turn Tracking' },
44
+ ],
45
+ columns: 3,
46
+ },
47
+ { type: 'title', text: 'Standard Initiative Rules for D&D 5e', level: 2 },
48
+ { type: 'paragraph', html: 'In D&D 5th Edition, each participant rolls a Dexterity check at the start of combat. Players roll individually. The Dungeon Master rolls once for each group of identical monsters. The turn order cycles from highest to lowest, then wraps back to the top for the next round. Ties are broken by Dexterity score, or the DM decides. A digital tracker handles all this automatically and shows the complete turn order at a glance.' },
49
+ {
50
+ type: 'table',
51
+ headers: ['Feature', 'Manual Tracking', 'Digital Tracker'],
52
+ rows: [
53
+ ['Sorting', 'Rewrite the list when initiatives change', 'Instant automatic reorder'],
54
+ ['Current Turn', 'Must track verbally or with a token', 'Highlighted with green glow'],
55
+ ['Status Effects', 'Separate notepad or dice near the mini', 'Click to toggle on each combatant'],
56
+ ['Round Counting', 'Keep count in your head or on scratch paper', 'Shown automatically'],
57
+ ['Adding Mid Combat', 'Erase and rewrite the order', 'Inserted at the correct position'],
58
+ ],
59
+ },
60
+ {
61
+ type: 'tip',
62
+ title: 'Tips for Running Initiative at the Table',
63
+ html: 'Roll initiative for all monsters before the session starts to save time during combat. Add common status effects like Stunned or Poisoned to a combatant as soon as they are applied. This prevents forgetting about a condition when the affected character turn comes around. Use the Previous Turn button to review what happened if you need to check a ruling from earlier in the round.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'Status Effects Commonly Used in Combat',
68
+ level: 3,
69
+ },
70
+ { type: 'paragraph', html: 'Tracking conditions during combat is one of the most frequently overlooked tasks. A status effect can completely change a character effectiveness, and forgetting to remove it can swing the balance of an encounter. The initiative tracker lets you apply and remove conditions with a single click so they stay visible next to the combatant name.' },
71
+ {
72
+ type: 'proscons',
73
+ title: 'Handling Status Effects Digitally vs Manually',
74
+ items: [
75
+ {
76
+ pro: 'Conditions are visible right next to the character name so nobody forgets an active effect.',
77
+ con: 'Requires remembering to toggle statuses on and off as they are applied and removed.',
78
+ },
79
+ {
80
+ pro: 'Multiple statuses can be active on the same combatant and are all shown together.',
81
+ con: 'The tracker does not enforce the rules effects automatically, the DM still applies them.',
82
+ },
83
+ {
84
+ pro: 'Statuses can be added mid combat without pausing to write on a character sheet.',
85
+ con: 'Only predefined status tags are available by default.',
86
+ },
87
+ ],
88
+ },
89
+ {
90
+ type: 'title',
91
+ text: 'Alternative Initiative Systems',
92
+ level: 3,
93
+ },
94
+ {
95
+ type: 'comparative',
96
+ items: [
97
+ {
98
+ title: 'Standard Initiative',
99
+ description: 'Each combatant rolls once at the start. The same order repeats each round. Simple and predictable, but the order is fixed after the first roll. Works well for most groups and encounter sizes.',
100
+ icon: 'mdi:swap-vertical',
101
+ highlight: true,
102
+ points: ['Simple to learn and teach', 'Fixed turn order each round', 'Works for any group size'],
103
+ },
104
+ {
105
+ title: 'Side Initiative',
106
+ description: 'All player characters act together, then all enemies act together. Common in older editions and OSR games. Speeds up combat by reducing individual tracking but reduces tactical nuance.',
107
+ icon: 'mdi:account-group',
108
+ highlight: false,
109
+ points: ['Fastest combat resolution', 'Encourages party coordination', 'Less individual turn variety'],
110
+ },
111
+ {
112
+ title: 'Speed Factor Variant',
113
+ description: 'Each round participants declare actions first, then roll initiative modified by their chosen action. Used in optional rulesets. Creates unpredictable turn order but adds depth to decision making.',
114
+ icon: 'mdi:run-fast',
115
+ highlight: false,
116
+ points: ['Different order every round', 'Action choice affects timing', 'More tactical decisions per turn'],
117
+ },
118
+ ],
119
+ columns: 3,
120
+ },
121
+ {
122
+ type: 'title',
123
+ text: 'Combat Tracker Glossary',
124
+ level: 3,
125
+ },
126
+ {
127
+ type: 'glossary',
128
+ items: [
129
+ {
130
+ term: 'Initiative',
131
+ definition: 'A Dexterity check rolled at the start of combat to determine the sequence of turns. Each participant rolls and acts in descending order.',
132
+ },
133
+ {
134
+ term: 'Round',
135
+ definition: 'A complete cycle where every combatant takes one turn. After the last combatant acts, the round ends and a new round begins from the top of the order.',
136
+ },
137
+ {
138
+ term: 'Status Effect',
139
+ definition: 'A temporary condition that modifies a character capabilities. Examples include Stunned (cannot act), Poisoned (disadvantage on rolls), and Blinded (attacks have disadvantage).',
140
+ },
141
+ {
142
+ term: 'NPC',
143
+ definition: 'Non Player Character controlled by the Dungeon Master. In initiative tracking, NPCs are typically enemies or neutral creatures in the encounter.',
144
+ },
145
+ {
146
+ term: 'PC',
147
+ definition: 'Player Character controlled by one of the players at the table. PCs are distinct from NPCs in the tracker to help the DM identify friendly targets.',
148
+ },
149
+ ],
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: 'When to Reroll Initiative Each Round',
155
+ icon: 'mdi:information-outline',
156
+ badge: 'DM TIP',
157
+ html: 'Some DMs prefer rerolling initiative each round for unpredictability, while most keep the same order for simplicity. If a new combatant joins mid fight, roll their initiative and insert them into the current position. The tracker handles this automatically. For boss encounters, consider giving the villain a fixed initiative at a specific count to make the fight feel more structured.',
158
+ },
159
+ ],
160
+ faq: [
161
+ {
162
+ question: 'How do I add combatants to the initiative order?',
163
+ answer: 'Enter the character name, initiative roll, and initiative modifier, then click Add. Toggle between Player and NPC types to visually distinguish party members from enemies in the list.',
164
+ },
165
+ {
166
+ question: 'What happens when I click Start Combat?',
167
+ answer: 'All combatants are sorted by initiative from highest to lowest. The turn order begins at the top, the round counter starts at 1, and the active combatant is highlighted with a green glow.',
168
+ },
169
+ {
170
+ question: 'How do I track status effects during combat?',
171
+ answer: 'Click a status tag (Stunned, Poisoned, Blinded, etc.) to toggle it on or off for the selected combatant. Active statuses appear next to the character name. This reminds everyone of ongoing effects when that combatant turn comes up.',
172
+ },
173
+ {
174
+ question: 'Does my combat data persist if I refresh the page?',
175
+ answer: 'Yes. The initiative tracker saves the combat state to your browser local storage. Your combatants, turn order, and status effects remain after a page reload. Data is cleared when you click End Combat.',
176
+ },
177
+ {
178
+ question: 'Can I go back to the previous turn?',
179
+ answer: 'Yes. The Previous Turn button lets you navigate backward through the turn order. This is useful for reviewing what happened earlier in the round or correcting a mistake.',
180
+ },
181
+ {
182
+ question: 'Can I add or remove combatants during combat?',
183
+ answer: 'Yes. New combatants can be added at any time and are automatically inserted into the correct position based on their initiative roll. Existing combatants can be removed if they leave the encounter.',
184
+ },
185
+ {
186
+ question: 'Does this work with any RPG system?',
187
+ answer: 'Yes. The tracker works with any tabletop RPG that uses initiative based turn order. Enter whatever initiative values your system uses whether it is a d20 roll plus Dex for D&D or a different mechanic for other games.',
188
+ },
189
+ ],
190
+ bibliography,
191
+ howTo: [
192
+ {
193
+ name: 'Add Combatants Before Combat',
194
+ text: 'Enter each character name, their initiative roll, and modifier. Mark them as Player or NPC. Add as many combatants as your encounter needs.',
195
+ },
196
+ {
197
+ name: 'Start Combat to Lock the Order',
198
+ text: 'Click Start Combat to sort everyone by initiative and begin tracking turns. The first combatant in the order is highlighted.',
199
+ },
200
+ {
201
+ name: 'Navigate Turns and Track Conditions',
202
+ text: 'Use Next Turn and Previous Turn to move through the order. Apply status effects by clicking the status tags to track conditions during the fight.',
203
+ },
204
+ {
205
+ name: 'End Combat When Finished',
206
+ text: 'Click End Combat to stop turn tracking. This clears the active state and resets the round counter while keeping the combatant list for the next encounter.',
207
+ },
208
+ ],
209
+ schemas: [
210
+ {
211
+ '@context': 'https://schema.org',
212
+ '@type': 'SoftwareApplication',
213
+ 'name': 'RPG Initiative Tracker',
214
+ 'operatingSystem': 'All',
215
+ 'applicationCategory': 'UtilitiesApplication',
216
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
217
+ },
218
+ {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'FAQPage',
221
+ 'mainEntity': [
222
+ {
223
+ '@type': 'Question',
224
+ 'name': 'How do I add combatants?',
225
+ 'acceptedAnswer': {
226
+ '@type': 'Answer',
227
+ 'text': 'Enter the character name, initiative roll, and initiative modifier, then click Add. Players and NPCs can be toggled to help distinguish them in the list.',
228
+ },
229
+ },
230
+ {
231
+ '@type': 'Question',
232
+ 'name': 'What happens when I click Start Combat?',
233
+ 'acceptedAnswer': {
234
+ '@type': 'Answer',
235
+ 'text': 'All combatants are sorted by initiative (highest first). The turn order begins with the first combatant and a round counter starts at 1.',
236
+ },
237
+ },
238
+ ],
239
+ },
240
+ {
241
+ '@context': 'https://schema.org',
242
+ '@type': 'HowTo',
243
+ 'name': 'How to Use the Initiative Tracker',
244
+ 'step': [
245
+ {
246
+ '@type': 'HowToStep',
247
+ 'name': 'Add Combatants',
248
+ 'text': 'Enter character details including name, initiative roll, and modifier. Toggle between Player and NPC types before adding.',
249
+ },
250
+ {
251
+ '@type': 'HowToStep',
252
+ 'name': 'Start Combat',
253
+ 'text': 'Click Start Combat to sort all combatants by initiative and begin turn order tracking.',
254
+ },
255
+ {
256
+ '@type': 'HowToStep',
257
+ 'name': 'Manage Turns',
258
+ 'text': 'Use Next Turn and Previous Turn to navigate the turn order. The active combatant is highlighted with a green glow.',
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ };
@@ -0,0 +1,264 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { InitiativeTrackerUI } from '../entry';
4
+
5
+ const ui: InitiativeTrackerUI = {
6
+ title: 'Rastreador de Iniciativa',
7
+ addCombatant: 'Agregar combatiente',
8
+ removeCombatant: 'Eliminar',
9
+ playerLabel: 'Jugador',
10
+ npcLabel: 'PNJ',
11
+ initiativeLabel: 'Iniciativa',
12
+ modifierLabel: 'Modificador',
13
+ namePlaceholder: 'Nombre del personaje',
14
+ initiativePlaceholder: 'Iniciativa',
15
+ modifierPlaceholder: 'Modificador',
16
+ addButton: 'Agregar',
17
+ startCombat: 'Iniciar combate',
18
+ endCombat: 'Finalizar combate',
19
+ nextTurn: 'Siguiente turno',
20
+ prevTurn: 'Turno anterior',
21
+ roundLabel: 'Ronda',
22
+ turnLabel: 'Turno',
23
+ noCombatants: 'Aún no hay combatientes. Agrega personajes para comenzar.',
24
+ statusInput: 'Estado',
25
+ combatStarted: '¡Combate iniciado!',
26
+ combatEnded: 'Combate finalizado',
27
+ yourTurn: 'Turno',
28
+ };
29
+
30
+ export const content: ToolLocaleContent<InitiativeTrackerUI> = {
31
+ slug: 'seguidor-de-iniciativa',
32
+ title: 'Rastreador de Iniciativa RPG: Orden de Turno y Gestor de Iniciativa',
33
+ description: 'Sigue el orden de iniciativa para cualquier juego de rol de mesa. Agrega combatientes, tira iniciativa, gestiona efectos de estado y navega entre turnos en combate.',
34
+ ui,
35
+ seo: [
36
+ { type: 'title', text: 'Cómo funciona la Iniciativa en D&D y otros Juegos de Rol de Mesa', level: 2 },
37
+ { type: 'paragraph', html: 'La iniciativa determina el orden de las acciones en combate. Cada participante realiza una prueba de Destreza al inicio del combate, y el orden de turnos va del más alto al más bajo. Un rastreador de iniciativa digital automatiza la clasificación, resalta al combatiente activo, rastrea los efectos de estado en curso y mantiene a toda la mesa informada sobre el próximo turno. Esto es especialmente útil para Dungeon Masters que gestionan encuentros complejos con múltiples tipos de enemigos y personajes jugadores.' },
38
+ {
39
+ type: 'stats',
40
+ items: [
41
+ { value: 'Ilimitados', label: 'Combatientes soportados' },
42
+ { value: 'Orden auto', label: 'Por tirada de iniciativa' },
43
+ { value: 'Tiempo real', label: 'Seguimiento de turnos' },
44
+ ],
45
+ columns: 3,
46
+ },
47
+ { type: 'title', text: 'Reglas de Iniciativa Estándar para D&D 5e', level: 2 },
48
+ { type: 'paragraph', html: 'En D&D 5ª Edición, cada participante realiza una prueba de Destreza al inicio del combate. Los jugadores tiran individualmente. El Dungeon Master tira una vez por cada grupo de monstruos idénticos. El orden de turnos va del más alto al más bajo, luego vuelve al principio para la siguiente ronda. Los empates se resuelven por puntuación de Destreza o decide el DM. Un rastreador digital maneja todo esto automáticamente y muestra el orden completo de turnos de un vistazo.' },
49
+ {
50
+ type: 'table',
51
+ headers: ['Función', 'Seguimiento manual', 'Rastreador digital'],
52
+ rows: [
53
+ ['Clasificación', 'Reescribir la lista cuando cambie la iniciativa', 'Reordenamiento automático instantáneo'],
54
+ ['Turno actual', 'Debe seguirse verbalmente o con una ficha', 'Resaltado con brillo verde'],
55
+ ['Efectos de estado', 'Bloc de notas aparte o dado junto a la miniatura', 'Haz clic para activar en cada combatiente'],
56
+ ['Conteo de rondas', 'Llevar la cuenta mentalmente o en un papel', 'Mostrado automáticamente'],
57
+ ['Añadir en combate', 'Borrar y reescribir el orden', 'Insertado en la posición correcta'],
58
+ ],
59
+ },
60
+ {
61
+ type: 'tip',
62
+ title: 'Consejos para dirigir la Iniciativa en la mesa',
63
+ html: 'Tira la iniciativa para todos los monstruos antes de la sesión para ahorrar tiempo durante el combate. Agrega efectos de estado comunes como Aturdido o Envenenado a un combatiente tan pronto como se apliquen. Esto evita olvidar una condición cuando llegue el turno del personaje afectado. Usa el botón Turno anterior para revisar lo que sucedió si necesitas verificar una decisión de una ronda anterior.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'Efectos de Estado Comunes en Combate',
68
+ level: 3,
69
+ },
70
+ { type: 'paragraph', html: 'El seguimiento de condiciones durante el combate es una de las tareas que más se pasan por alto. Un efecto de estado puede cambiar completamente la eficacia de un personaje, y olvidarse de eliminarlo puede desequilibrar un encuentro. El rastreador de iniciativa te permite aplicar y eliminar condiciones con un solo clic para que permanezcan visibles junto al nombre del combatiente.' },
71
+ {
72
+ type: 'proscons',
73
+ title: 'Gestión digital vs manual de efectos de estado',
74
+ items: [
75
+ {
76
+ pro: 'Las condiciones son visibles junto al nombre del personaje, así que nadie olvida un efecto activo.',
77
+ con: 'Requiere recordar activar y desactivar los estados según se aplican y eliminan.',
78
+ },
79
+ {
80
+ pro: 'Varios estados pueden estar activos en el mismo combatiente y se muestran todos juntos.',
81
+ con: 'El rastreador no aplica automáticamente los efectos de las reglas; el DM aún debe gestionarlos.',
82
+ },
83
+ {
84
+ pro: 'Los estados pueden agregarse durante el combate sin detenerse a escribir en una hoja de personaje.',
85
+ con: 'Solo las etiquetas de estado predefinidas están disponibles por defecto.',
86
+ },
87
+ ],
88
+ },
89
+ {
90
+ type: 'title',
91
+ text: 'Sistemas de Iniciativa Alternativos',
92
+ level: 3,
93
+ },
94
+ {
95
+ type: 'comparative',
96
+ items: [
97
+ {
98
+ title: 'Iniciativa Estándar',
99
+ description: 'Cada combatiente tira una vez al inicio. El mismo orden se repite cada ronda. Simple y predecible, pero el orden es fijo después de la primera tirada. Funciona bien para la mayoría de grupos y tamaños de encuentro.',
100
+ icon: 'mdi:swap-vertical',
101
+ highlight: true,
102
+ points: ['Simple de aprender y enseñar', 'Orden de turnos fijo cada ronda', 'Funciona para cualquier grupo'],
103
+ },
104
+ {
105
+ title: 'Iniciativa de Grupo',
106
+ description: 'Todos los personajes jugadores actúan juntos, luego todos los enemigos juntos. Común en ediciones antiguas y juegos OSR. Acelera el combate reduciendo el seguimiento individual pero reduce la profundidad táctica.',
107
+ icon: 'mdi:account-group',
108
+ highlight: false,
109
+ points: ['Resolución de combate más rápida', 'Fomenta la coordinación del grupo', 'Menos variedad en turnos individuales'],
110
+ },
111
+ {
112
+ title: 'Variante de Factor de Velocidad',
113
+ description: 'Cada ronda los participantes declaran acciones primero, luego tiran iniciativa modificada por la acción elegida. Usado en conjuntos de reglas opcionales. Crea un orden de turno impredecible pero añade profundidad a la toma de decisiones.',
114
+ icon: 'mdi:run-fast',
115
+ highlight: false,
116
+ points: ['Orden diferente cada ronda', 'La elección de acción afecta el tiempo', 'Más decisiones tácticas por turno'],
117
+ },
118
+ ],
119
+ columns: 3,
120
+ },
121
+ {
122
+ type: 'title',
123
+ text: 'Glosario del Rastreador de Combate',
124
+ level: 3,
125
+ },
126
+ {
127
+ type: 'glossary',
128
+ items: [
129
+ {
130
+ term: 'Iniciativa',
131
+ definition: 'Una prueba de Destreza realizada al inicio del combate para determinar la secuencia de turnos. Cada participante tira y actúa en orden descendente.',
132
+ },
133
+ {
134
+ term: 'Ronda',
135
+ definition: 'Un ciclo completo en el que cada combatiente realiza un turno. Después del último combatiente, la ronda termina y comienza una nueva desde el principio del orden.',
136
+ },
137
+ {
138
+ term: 'Efecto de Estado',
139
+ definition: 'Una condición temporal que modifica las capacidades de un personaje. Ejemplos incluyen Aturdido (no puede actuar), Envenenado (desventaja en tiradas) y Cegado (ataques con desventaja).',
140
+ },
141
+ {
142
+ term: 'PNJ',
143
+ definition: 'Personaje No Jugador controlado por el Dungeon Master. En el seguimiento de iniciativa, los PNJ son típicamente enemigos o criaturas neutrales en el encuentro.',
144
+ },
145
+ {
146
+ term: 'PJ',
147
+ definition: 'Personaje Jugador controlado por uno de los jugadores en la mesa. Los PJ se distinguen de los PNJ en el rastreador para ayudar al DM a identificar objetivos aliados.',
148
+ },
149
+ ],
150
+ },
151
+ {
152
+ type: 'diagnostic',
153
+ variant: 'info',
154
+ title: 'Cuándo relanzar la Iniciativa cada ronda',
155
+ icon: 'mdi:information-outline',
156
+ badge: 'CONSEJO DM',
157
+ html: 'Algunos DM prefieren relanzar la iniciativa cada ronda para mayor imprevisibilidad, mientras que la mayoría mantiene el mismo orden por simplicidad. Si un nuevo combatiente se une a la pelea, tira su iniciativa e insértalo en la posición actual. El rastreador maneja esto automáticamente. Para encuentros con jefes, considera dar al villano una iniciativa fija en un valor específico para que el combate se sienta más estructurado.',
158
+ },
159
+ ],
160
+ faq: [
161
+ {
162
+ question: '¿Cómo agrego combatientes al orden de iniciativa?',
163
+ answer: 'Ingresa el nombre del personaje, la tirada de iniciativa y el modificador de iniciativa, luego haz clic en Agregar. Alterna entre los tipos Jugador y PNJ para distinguir visualmente a los miembros del grupo de los enemigos en la lista.',
164
+ },
165
+ {
166
+ question: '¿Qué sucede cuando hago clic en Iniciar combate?',
167
+ answer: 'Todos los combatientes se ordenan por iniciativa de mayor a menor. El orden de turnos comienza desde arriba, el contador de rondas empieza en 1 y el combatiente activo se resalta con un brillo verde.',
168
+ },
169
+ {
170
+ question: '¿Cómo rastreo los efectos de estado durante el combate?',
171
+ answer: 'Haz clic en una etiqueta de estado (Aturdido, Envenenado, Cegado, etc.) para activarla o desactivarla para el combatiente seleccionado. Los estados activos aparecen junto al nombre del personaje. Esto recuerda a todos los efectos en curso cuando llegue el turno de ese combatiente.',
172
+ },
173
+ {
174
+ question: '¿Mis datos de combate persisten si actualizo la página?',
175
+ answer: 'Sí. El rastreador de iniciativa guarda el estado del combate en el almacenamiento local de tu navegador. Tus combatientes, orden de turnos y efectos de estado permanecen después de recargar la página. Los datos se borran cuando haces clic en Finalizar combate.',
176
+ },
177
+ {
178
+ question: '¿Puedo volver al turno anterior?',
179
+ answer: 'Sí. El botón Turno anterior te permite navegar hacia atrás en el orden de turnos. Esto es útil para revisar lo que sucedió antes en la ronda o corregir un error.',
180
+ },
181
+ {
182
+ question: '¿Puedo agregar o eliminar combatientes durante el combate?',
183
+ answer: 'Sí. Se pueden agregar nuevos combatientes en cualquier momento y se insertan automáticamente en la posición correcta según su tirada de iniciativa. Los combatientes existentes se pueden eliminar si abandonan el encuentro.',
184
+ },
185
+ {
186
+ question: '¿Funciona con cualquier sistema de juego de rol?',
187
+ answer: 'Sí. El rastreador funciona con cualquier juego de rol de mesa que use un orden de turnos basado en iniciativa. Ingresa los valores de iniciativa que use tu sistema, ya sea una tirada de d20 más Destreza para D&D o un mecanismo diferente para otros juegos.',
188
+ },
189
+ ],
190
+ bibliography,
191
+ howTo: [
192
+ {
193
+ name: 'Agrega combatientes antes del combate',
194
+ text: 'Ingresa el nombre de cada personaje, su tirada de iniciativa y su modificador. Márcalos como Jugador o PNJ. Agrega tantos combatientes como necesite tu encuentro.',
195
+ },
196
+ {
197
+ name: 'Inicia el combate para fijar el orden',
198
+ text: 'Haz clic en Iniciar combate para ordenar a todos por iniciativa y comenzar el seguimiento de turnos. El primer combatiente en el orden se resalta.',
199
+ },
200
+ {
201
+ name: 'Navega entre turnos y rastrea condiciones',
202
+ text: 'Usa Siguiente turno y Turno anterior para moverte por el orden. Aplica efectos de estado haciendo clic en las etiquetas de estado para rastrear condiciones durante el combate.',
203
+ },
204
+ {
205
+ name: 'Finaliza el combate cuando termines',
206
+ text: 'Haz clic en Finalizar combate para detener el seguimiento de turnos. Esto limpia el estado activo y reinicia el contador de rondas mientras mantiene la lista de combatientes para el próximo encuentro.',
207
+ },
208
+ ],
209
+ schemas: [
210
+ {
211
+ '@context': 'https://schema.org',
212
+ '@type': 'SoftwareApplication',
213
+ 'name': 'Rastreador de Iniciativa RPG',
214
+ 'operatingSystem': 'Todos',
215
+ 'applicationCategory': 'UtilitiesApplication',
216
+ 'browserRequirements': 'Requiere HTML5. Requiere JavaScript.',
217
+ },
218
+ {
219
+ '@context': 'https://schema.org',
220
+ '@type': 'FAQPage',
221
+ 'mainEntity': [
222
+ {
223
+ '@type': 'Question',
224
+ 'name': '¿Cómo agrego combatientes?',
225
+ 'acceptedAnswer': {
226
+ '@type': 'Answer',
227
+ 'text': 'Ingresa el nombre del personaje, la tirada de iniciativa y el modificador de iniciativa, luego haz clic en Agregar. Puedes alternar entre Jugador y PNJ para distinguirlos en la lista.',
228
+ },
229
+ },
230
+ {
231
+ '@type': 'Question',
232
+ 'name': '¿Qué sucede cuando hago clic en Iniciar combate?',
233
+ 'acceptedAnswer': {
234
+ '@type': 'Answer',
235
+ 'text': 'Todos los combatientes se ordenan por iniciativa (del más alto primero). El orden de turnos comienza con el primer combatiente y un contador de rondas empieza en 1.',
236
+ },
237
+ },
238
+ ],
239
+ },
240
+ {
241
+ '@context': 'https://schema.org',
242
+ '@type': 'HowTo',
243
+ 'name': 'Cómo usar el Rastreador de Iniciativa',
244
+ 'step': [
245
+ {
246
+ '@type': 'HowToStep',
247
+ 'name': 'Agregar combatientes',
248
+ 'text': 'Ingresa los detalles del personaje: nombre, tirada de iniciativa y modificador. Alterna entre Jugador y PNJ antes de agregar.',
249
+ },
250
+ {
251
+ '@type': 'HowToStep',
252
+ 'name': 'Iniciar combate',
253
+ 'text': 'Haz clic en Iniciar combate para ordenar todos los combatientes por iniciativa y comenzar el seguimiento del orden de turnos.',
254
+ },
255
+ {
256
+ '@type': 'HowToStep',
257
+ 'name': 'Gestionar turnos',
258
+ 'text': 'Usa Siguiente turno y Turno anterior para navegar el orden de turnos. El combatiente activo se resalta con un brillo verde.',
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ };
264
+