@jjlmoya/utils-tabletop 1.11.0 → 1.12.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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -0
  3. package/src/tests/locale_completeness.test.ts +1 -1
  4. package/src/tests/tool_validation.test.ts +1 -1
  5. package/src/tool/dice-roller-simulator/component.astro +116 -26
  6. package/src/tool/scatter-direction-selector/animation.ts +278 -0
  7. package/src/tool/scatter-direction-selector/bibliography.astro +16 -0
  8. package/src/tool/scatter-direction-selector/bibliography.ts +12 -0
  9. package/src/tool/scatter-direction-selector/client.ts +296 -0
  10. package/src/tool/scatter-direction-selector/component.astro +184 -0
  11. package/src/tool/scatter-direction-selector/entry.ts +59 -0
  12. package/src/tool/scatter-direction-selector/history.ts +71 -0
  13. package/src/tool/scatter-direction-selector/i18n/de.ts +143 -0
  14. package/src/tool/scatter-direction-selector/i18n/en.ts +231 -0
  15. package/src/tool/scatter-direction-selector/i18n/es.ts +143 -0
  16. package/src/tool/scatter-direction-selector/i18n/fr.ts +143 -0
  17. package/src/tool/scatter-direction-selector/i18n/id.ts +143 -0
  18. package/src/tool/scatter-direction-selector/i18n/it.ts +143 -0
  19. package/src/tool/scatter-direction-selector/i18n/ja.ts +143 -0
  20. package/src/tool/scatter-direction-selector/i18n/ko.ts +143 -0
  21. package/src/tool/scatter-direction-selector/i18n/nl.ts +143 -0
  22. package/src/tool/scatter-direction-selector/i18n/pl.ts +143 -0
  23. package/src/tool/scatter-direction-selector/i18n/pt.ts +143 -0
  24. package/src/tool/scatter-direction-selector/i18n/ru.ts +143 -0
  25. package/src/tool/scatter-direction-selector/i18n/sv.ts +143 -0
  26. package/src/tool/scatter-direction-selector/i18n/tr.ts +143 -0
  27. package/src/tool/scatter-direction-selector/i18n/zh.ts +143 -0
  28. package/src/tool/scatter-direction-selector/index.ts +10 -0
  29. package/src/tool/scatter-direction-selector/logic.test.ts +62 -0
  30. package/src/tool/scatter-direction-selector/logic.ts +52 -0
  31. package/src/tool/scatter-direction-selector/scatter-direction-selector.css +794 -0
  32. package/src/tool/scatter-direction-selector/seo.astro +16 -0
  33. package/src/tool/scatter-direction-selector/settings.ts +81 -0
  34. package/src/tool/scatter-direction-selector/sound.ts +22 -0
  35. package/src/tools.ts +2 -0
@@ -0,0 +1,143 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ScatterSelectorLocaleContent } from '../entry';
3
+
4
+ const ui = {
5
+ title: '산탄방향 선택기',
6
+ setupTitle: '산탄 설정',
7
+ sectorsLabel: '나침반 섹터',
8
+ sectors8: '8방향',
9
+ sectors12: '12방향 (시계)',
10
+ diceLabel: '편차 거리 롤',
11
+ diceD6: '1D6 인치',
12
+ dice2D6: '2D6 인치',
13
+ diceD10: '1D10 인치',
14
+ diceCustom: '사용자 지정 범위',
15
+ customMaxLabel: '최대 거리',
16
+ hitChanceLabel: '직격 확률 (%)',
17
+ rollButton: '산탄 롤',
18
+ hitResult: '직격!',
19
+ scatterResult: '산탄!',
20
+ distanceLabel: '거리',
21
+ angleLabel: '각도',
22
+ dragHint: '나침반을 드래그하여 풍향을 수동으로 설정하세요',
23
+ historyTitle: '최근 롤',
24
+ clearHistory: '기록 지우기',
25
+ presetTitle: '워게이밍 프리셋',
26
+ soundOn: '사운드 켜짐',
27
+ soundOff: '사운드 꺼짐',
28
+ guideStep1: '나침반을 드래그하여 테이블 방향에 맞추세요',
29
+ guideStep2: '섹터, 주사위, 직격 확률을 선택하세요',
30
+ guideStep3: '중앙 = 목표. 녹색 빛이 정확히 그곳에 도달했음을 의미합니다',
31
+ guideStep3Scatter: '화살표 = 편차 방향. 중앙에서 화살표 방향으로 그 인치만큼 사격을 이동하세요',
32
+ scatterModeLabel: '산탄 방향',
33
+ scatterModeRandom: '무작위',
34
+ scatterModeWind: '바람 표류',
35
+ scatterModeWindHint: '화살표는 항상 나침반을 따름 - 거리만 무작위',
36
+ };
37
+
38
+ const faq = [
39
+ {
40
+ question: '산탄방향 선택기는 어떻게 작동하나요?',
41
+ answer: '선택한 주사위 구성에 따라 무작위 각도(0-359도)와 거리를 계산합니다. 또한 산탄 주사위를 시뮬레이션하여 직격을 확인합니다.',
42
+ },
43
+ {
44
+ question: '섹터 형식을 변경할 수 있나요?',
45
+ answer: '네, 8방향 기본 섹터와 12방향 시계판 섹터 간에 전환할 수 있습니다.',
46
+ },
47
+ {
48
+ question: '직격 확률이란 무엇인가요?',
49
+ answer: '발사체가 조준한 지점에 정확히 편차 없이 착탄할 확률을 나타냅니다. 표준 산탄 주사위의 "명중" 결과를 시뮬레이션합니다.',
50
+ },
51
+ {
52
+ question: 'Warhammer나 Bolt Action과 호환되나요?',
53
+ answer: '네, 대부분의 전술 워게임과 미니어처 룰셋에서 사용하는 표준 8방향 템플릿과 12방향 시계 정렬을 지원합니다.',
54
+ },
55
+ {
56
+ question: '산탄 거리는 시각적으로 어떻게 표시되나요?',
57
+ answer: '거리(인치)가 충돌 지점에 떠 있는 레이블로 표시되며, 편차 방향을 따라 배치됩니다. 빨간색 나침반 화살표도 최종 각도에 고정되어 템플릿을 빠르게 정렬할 수 있습니다.',
58
+ },
59
+ {
60
+ question: '더 빠른 결과를 위해 애니메이션을 비활성화할 수 있나요?',
61
+ answer: '애니메이션은 약 2초간 지속되며, 그 후 최종 결과가 중앙에 표시되고 나침반 화살표가 고정됩니다. 현재 건너뛰기 옵션은 없지만, 이 지연은 실제 주사위를 굴리는 속도에 맞게 설계되었습니다.',
62
+ },
63
+ ];
64
+
65
+ const howTo = [
66
+ {
67
+ name: '규칙 설정',
68
+ text: '나침반 섹터를 선택하고, 거리 주사위 프리셋을 고르고, 직격 확률을 조정하세요.',
69
+ },
70
+ {
71
+ name: '롤 또는 드래그',
72
+ text: '"산탄 롤"을 클릭하여 편차를 시뮬레이션하거나, 나침반 휠을 드래그하여 방향을 수동으로 조정하세요.',
73
+ },
74
+ {
75
+ name: '결과 확인',
76
+ text: '중앙 디스플레이와 벡터 화살표를 확인하여 산탄의 정확한 거리, 각도, 방향을 파악하세요.',
77
+ },
78
+ {
79
+ name: '궤적 관찰',
80
+ text: '롤 후, 애니메이션된 발사체가 나침반을 가로질러 이동하는 것을 관찰하세요. 점선 궤적은 편차 경로를 나타내고, 충돌 지점에 거리가 인치로 표시됩니다.',
81
+ },
82
+ {
83
+ name: '결과 해석',
84
+ text: '녹색 펄스와 "DIRECT HIT"는 편차가 없음을 의미합니다. 거리 레이블이 있는 빨간색 폭발은 산탄을 의미합니다 - 목표에서 화살표 방향으로 그 인치만큼 템플릿을 배치하세요.',
85
+ },
86
+ ];
87
+
88
+ export const content: ScatterSelectorLocaleContent = {
89
+ slug: 'scatter-direction-selector',
90
+ title: '산탄방향 선택기: 테이블탑 워게이밍 나침반',
91
+ description: '미니어처 워게임을 위한 무작위 편차, 바람 표류, 산탄 방향을 3D 촉각 나침반으로 결정합니다.',
92
+ ui,
93
+ seo: [
94
+ { type: 'title', text: '실시간 발사체 애니메이션을 갖춘 인터랙티브 산탄 나침반', level: 2 },
95
+ { type: 'paragraph', html: '산탄방향 선택기는 정적 숫자 생성을 넘어 나침반 오버레이에 애니메이션 발사체 궤적을 직접 렌더링합니다. "산탄 롤"을 클릭하면 발광하는 발사체가 중심에서 편차 각도를 따라 이동하며, 점선 궤적을 남기고 충돌 지점에서 입자로 폭발합니다.' },
96
+ { type: 'stats', items: [
97
+ { value: '2', label: '섹터 시스템', icon: 'mdi:compass-rose' },
98
+ { value: '4', label: '주사위 프리셋', icon: 'mdi:dice-d6' },
99
+ { value: '0-100%', label: '명중 확률 범위', icon: 'mdi:target' },
100
+ { value: '10', label: '최근 롤 기록', icon: 'mdi:history' },
101
+ ], columns: 4 },
102
+ { type: 'title', text: '궤적 애니메이션이 워게임 의사 결정을 향상시키는 방법', level: 3 },
103
+ { type: 'paragraph', html: '전통적인 산탄 도구는 숫자 각도와 거리만 표시하여 플레이어가 테이블 위의 오프셋을 머릿속으로 시각화해야 합니다. 애니메이션 궤적은 조준점에서 산탄 착륙 지점까지의 정확한 비행 경로를 그려 이 간격을 메웁니다.' },
104
+ { type: 'diagnostic', variant: 'success', title: '직격', html: '롤이 직격 확률을 초과하면 나침반 중앙이 맥동하는 녹색 링과 "DIRECT HIT" 텍스트 애니메이션으로 폭발합니다. 발사체는 중앙으로 돌아와 편차 없는 완벽한 충돌을 확인합니다.' },
105
+ { type: 'diagnostic', variant: 'error', title: '산탄', html: '산탄 결과의 경우 발사체가 점선 궤적을 따라 착륙 지점으로 이동합니다. 입자 폭발, 발광 마커, 거리(인치) (예: <strong>5"</strong>)가 충돌 위치에 나타납니다.' },
106
+ { type: 'tip', title: '전문가 팁: 바람 표류 모드 사용하기', html: '바람 표류를 활성화하면 산탄 방향이 수동으로 회전한 나침반 각도에 고정됩니다. 이는 우세풍이나 고정 변위 벡터를 시뮬레이션합니다 - 무유도 로켓, 가스 구름, 순간이동 사고 등에 이상적입니다.' },
107
+ ],
108
+ faq,
109
+ bibliography,
110
+ howTo,
111
+ schemas: [
112
+ {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'FAQPage',
115
+ 'mainEntity': faq.map((f) => ({
116
+ '@type': 'Question',
117
+ 'name': f.question,
118
+ 'acceptedAnswer': {
119
+ '@type': 'Answer',
120
+ 'text': f.answer,
121
+ },
122
+ })),
123
+ },
124
+ {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ 'name': '산탄방향 선택기',
128
+ 'operatingSystem': 'All',
129
+ 'applicationCategory': 'UtilitiesApplication',
130
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
131
+ },
132
+ {
133
+ '@context': 'https://schema.org',
134
+ '@type': 'HowTo',
135
+ 'name': '산탄방향 선택기 사용 방법',
136
+ 'step': howTo.map((h) => ({
137
+ '@type': 'HowToStep',
138
+ 'name': h.name,
139
+ 'text': h.text,
140
+ })),
141
+ },
142
+ ],
143
+ };
@@ -0,0 +1,143 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ScatterSelectorLocaleContent } from '../entry';
3
+
4
+ const ui = {
5
+ title: 'Richtingskiezer Afwijking',
6
+ setupTitle: 'Afwijkingsinstellingen',
7
+ sectorsLabel: 'Kompassectoren',
8
+ sectors8: '8 Richtingen',
9
+ sectors12: '12 Richtingen (Klok)',
10
+ diceLabel: 'Afwijkingsafstand Worp',
11
+ diceD6: '1D6 Inch',
12
+ dice2D6: '2D6 Inch',
13
+ diceD10: '1D10 Inch',
14
+ diceCustom: 'Aangepast Bereik',
15
+ customMaxLabel: 'Maximale Afstand',
16
+ hitChanceLabel: 'Directe Trefkans (%)',
17
+ rollButton: 'Werp Afwijking',
18
+ hitResult: 'Directe Treffer!',
19
+ scatterResult: 'Afwijking!',
20
+ distanceLabel: 'Afstand',
21
+ angleLabel: 'Hoek',
22
+ dragHint: 'Sleep het kompas om de windrichting handmatig in te stellen',
23
+ historyTitle: 'Recente Worpen',
24
+ clearHistory: 'Wis Geschiedenis',
25
+ presetTitle: 'Wargaming Voorinstellingen',
26
+ soundOn: 'Geluid Aan',
27
+ soundOff: 'Geluid Uit',
28
+ guideStep1: 'Sleep het kompas om het af te stemmen op je tafeloriëntatie',
29
+ guideStep2: 'Kies sectoren, dobbelstenen en directe trefkans',
30
+ guideStep3: 'Midden = je doelwit. Groene gloed betekent dat het daar precies is geland',
31
+ guideStep3Scatter: 'Pijl = afwijkingsrichting. Verplaats het schot vanuit het midden dat aantal inch langs de pijl',
32
+ scatterModeLabel: 'Afwijkingsrichting',
33
+ scatterModeRandom: 'Willekeurig',
34
+ scatterModeWind: 'Winddrift',
35
+ scatterModeWindHint: 'Pijl volgt altijd het kompas - alleen de afstand is willekeurig',
36
+ };
37
+
38
+ const faq = [
39
+ {
40
+ question: 'Hoe werkt de Richtingskiezer Afwijking?',
41
+ answer: 'Het berekent een willekeurige hoek (0-359 graden) en een afstand op basis van de geselecteerde dobbelsteenconfiguratie. Het simuleert ook een afwijkingsdobbelsteen en controleert op directe treffers.',
42
+ },
43
+ {
44
+ question: 'Kan ik het sectorformaat wijzigen?',
45
+ answer: 'Ja, je kunt schakelen tussen 8-richtings cardinale sectoren en 12-richtings klokzijdige sectoren.',
46
+ },
47
+ {
48
+ question: 'Wat is de directe trefkans?',
49
+ answer: 'Het vertegenwoordigt de kans dat het projectiel precies daar landt waar op werd gericht, zonder enige afwijking. Dit simuleert een "Treffer"-resultaat op een standaard afwijkingsdobbelsteen.',
50
+ },
51
+ {
52
+ question: 'Is dit compatibel met Warhammer of Bolt Action?',
53
+ answer: 'Ja, het ondersteunt standaard 8-richtings sjablonen en 12-richtings klokuitlijningen die in de meeste tactische wargames en miniatuurregelsets worden gebruikt.',
54
+ },
55
+ {
56
+ question: 'Wat toont de projectielbaan animatie?',
57
+ answer: 'Een gloeiend projectiel reist van het midden van het kompas naar de afwijkingslandingsplaats en laat een gestreept spoor achter. Bij een directe treffer blijft het projectiel gecentreerd en pulseren groene ringen naar buiten.',
58
+ },
59
+ {
60
+ question: 'Hoe wordt de afwijkingsafstand visueel weergegeven?',
61
+ answer: 'De afstand in inch verschijnt als een zwevend label op de inslagplaats, gepositioneerd langs de afwijkingsrichting. De rode kompaspijl vergrendelt ook op de uiteindelijke hoek voor snelle sjabloonuitlijning.',
62
+ },
63
+ ];
64
+
65
+ const howTo = [
66
+ {
67
+ name: 'Configureer Regels',
68
+ text: 'Selecteer kompassectoren, kies een afstandsdobbelsteen en stel de directe trefkans in.',
69
+ },
70
+ {
71
+ name: 'Werp of Sleep',
72
+ text: 'Klik op Werp Afwijking om de afwijking te simuleren, of sleep aan het kompaswiel om de richting handmatig aan te passen.',
73
+ },
74
+ {
75
+ name: 'Lees Uitkomst',
76
+ text: 'Controleer het centrale display en de vectorpijl om de exacte afstand, hoek en richting van de afwijking te vinden.',
77
+ },
78
+ {
79
+ name: 'Observeer de Baan',
80
+ text: 'Na het werpen zie je het geanimeerde projectiel over het kompas reizen. Het gestreepte spoor toont het afwijkingspad en de inslagplaats geeft de afstand in inch weer.',
81
+ },
82
+ {
83
+ name: 'Interpreteer het Resultaat',
84
+ text: 'Een groene puls met "DIRECT HIT" betekent nul afwijking. Een rode explosie met een afstandslabel betekent dat het schot afweek - plaats je sjabloon dat aantal inch van het doelwit in de richting van de pijl.',
85
+ },
86
+ ];
87
+
88
+ export const content: ScatterSelectorLocaleContent = {
89
+ slug: 'richtingskiezer-afwijking',
90
+ title: 'Richtingskiezer Afwijking: Tactisch Kompas voor Tafelblad Wargames',
91
+ description: 'Bepaal willekeurige afwijkingen, winddrift en spuitrichtingen voor miniatuur wargames met een tactiel 3D-kompas.',
92
+ ui,
93
+ seo: [
94
+ { type: 'title', text: 'Interactief Afwijkingskompas met Real Time Projectielanimatie', level: 2 },
95
+ { type: 'paragraph', html: 'De Richtingskiezer Afwijking gaat verder dan statische nummergeneratie door een geanimeerde projectielbaan direct op de kompasoverlay weer te geven. Wanneer je op Werp Afwijking klikt, reist een gloeiend projectiel vanuit het midden langs de afwijkingshoek, laat een gestreept spoor achter en barst in deeltjes op de inslagplaats.' },
96
+ { type: 'stats', items: [
97
+ { value: '2', label: 'Sectorsystemen', icon: 'mdi:compass-rose' },
98
+ { value: '4', label: 'Dobbelsteen Voorinstellingen', icon: 'mdi:dice-d6' },
99
+ { value: '0-100%', label: 'Trefkans Bereik', icon: 'mdi:target' },
100
+ { value: '10', label: 'Recente Worp Geschiedenis', icon: 'mdi:history' },
101
+ ], columns: 4 },
102
+ { type: 'title', text: 'Hoe de Baananimatie de Besluitvorming bij Wargaming Verbeterd', level: 3 },
103
+ { type: 'paragraph', html: 'Traditionele afwijkingshulpmiddelen tonen een numerieke hoek en afstand, waardoor spelers de verschuiving op de tafel mentaal moeten visualiseren. De geanimeerde baan overbrugt deze kloof door de exacte vluchtroute van het mikpunt naar de afwijkingslandingszone te tekenen.' },
104
+ { type: 'diagnostic', variant: 'success', title: 'Directe Treffer', html: 'Wanneer de worp de trefkans overtreft, barst het kompascentrum uit met pulserende groene ringen en een "DIRECT HIT" tekstanimatie. Het projectiel keert terug naar het centrum, wat een perfecte inslag zonder afwijking bevestigt.' },
105
+ { type: 'diagnostic', variant: 'error', title: 'Afwijking', html: 'Bij een afwijkingsresultaat volgt het projectiel een gestreepte baan naar zijn landingsplaats. Een deeltjesuitbarsting, een gloeiende markering en de afstand in inch (bijv. <strong>5"</strong>) verschijnen op de landingsplaats.' },
106
+ { type: 'tip', title: 'Pro Tip: Winddrift Modus Gebruiken', html: 'Schakel Winddrift in om de afwijkingsrichting te vergrendelen op uw handmatig gedraaide kompashoek. Simuleert een heersende wind of een vaste verplaatsingsvector - ideaal voor ongeleide raketten, gaswolken of mislukte teleportaties.' },
107
+ ],
108
+ faq,
109
+ bibliography,
110
+ howTo,
111
+ schemas: [
112
+ {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'FAQPage',
115
+ 'mainEntity': faq.map((f) => ({
116
+ '@type': 'Question',
117
+ 'name': f.question,
118
+ 'acceptedAnswer': {
119
+ '@type': 'Answer',
120
+ 'text': f.answer,
121
+ },
122
+ })),
123
+ },
124
+ {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ 'name': 'Richtingskiezer Afwijking',
128
+ 'operatingSystem': 'All',
129
+ 'applicationCategory': 'UtilitiesApplication',
130
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
131
+ },
132
+ {
133
+ '@context': 'https://schema.org',
134
+ '@type': 'HowTo',
135
+ 'name': 'Hoe gebruik je de Richtingskiezer Afwijking',
136
+ 'step': howTo.map((h) => ({
137
+ '@type': 'HowToStep',
138
+ 'name': h.name,
139
+ 'text': h.text,
140
+ })),
141
+ },
142
+ ],
143
+ };
@@ -0,0 +1,143 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ScatterSelectorLocaleContent } from '../entry';
3
+
4
+ const ui = {
5
+ title: 'Selektor Kierunku Rozrzutu',
6
+ setupTitle: 'Ustawienia Rozrzutu',
7
+ sectorsLabel: 'Sektory Kompasu',
8
+ sectors8: '8 Kierunków',
9
+ sectors12: '12 Kierunków (Zegar)',
10
+ diceLabel: 'Rzut Dystansu Odchylenia',
11
+ diceD6: '1D6 Cali',
12
+ dice2D6: '2D6 Cali',
13
+ diceD10: '1D10 Cali',
14
+ diceCustom: 'Zakres Niestandardowy',
15
+ customMaxLabel: 'Maksymalna Odległość',
16
+ hitChanceLabel: 'Szansa Trafienia Bezpośredniego (%)',
17
+ rollButton: 'Rzuć Rozrzut',
18
+ hitResult: 'Trafienie Bezpośrednie!',
19
+ scatterResult: 'Rozrzut!',
20
+ distanceLabel: 'Odległość',
21
+ angleLabel: 'Kąt',
22
+ dragHint: 'Przeciągnij kompas, aby ręcznie ustawić kierunek wiatru',
23
+ historyTitle: 'Ostatnie Rzuty',
24
+ clearHistory: 'Wyczyść Historię',
25
+ presetTitle: 'Ustawienia Wargamingowe',
26
+ soundOn: 'Dźwięk Włączony',
27
+ soundOff: 'Dźwięk Wyłączony',
28
+ guideStep1: 'Przeciągnij kompas, aby dopasować go do orientacji stołu',
29
+ guideStep2: 'Wybierz sektory, kości i szansę trafienia bezpośredniego',
30
+ guideStep3: 'Środek = twój cel. Zielona poświata oznacza, że trafił dokładnie tam',
31
+ guideStep3Scatter: 'Strzałka = kierunek odchylenia. Przesuń strzał od środka o tyle cali wzdłuż strzałki',
32
+ scatterModeLabel: 'Kierunek Rozrzutu',
33
+ scatterModeRandom: 'Losowy',
34
+ scatterModeWind: 'Dryf Wiatru',
35
+ scatterModeWindHint: 'Strzałka zawsze podąża za kompasem - tylko dystans jest losowy',
36
+ };
37
+
38
+ const faq = [
39
+ {
40
+ question: 'Jak działa Selektor Kierunku Rozrzutu?',
41
+ answer: 'Oblicza losowy kąt (0-359 stopni) i dystans na podstawie wybranej konfiguracji kości. Symuluje również kość rozrzutu, sprawdzając trafienia bezpośrednie.',
42
+ },
43
+ {
44
+ question: 'Czy mogę zmienić format sektorów?',
45
+ answer: 'Tak, możesz przełączać się między sektorami kardynalnymi 8-kierunkowymi a sektorami 12-kierunkowymi w formacie zegarowym.',
46
+ },
47
+ {
48
+ question: 'Czym jest szansa trafienia bezpośredniego?',
49
+ answer: 'Reprezentuje prawdopodobieństwo, że pocisk trafi dokładnie w cel bez żadnego odchylenia, symulując wynik „Trafienie" na standardowej kości rozrzutu.',
50
+ },
51
+ {
52
+ question: 'Czy to jest zgodne z Warhammer lub Bolt Action?',
53
+ answer: 'Tak, obsługuje standardowe szablony 8-kierunkowe i ustawienia zegarowe 12-kierunkowe używane w większości taktycznych gier wojennych i systemów figurkowych.',
54
+ },
55
+ {
56
+ question: 'Jak wizualnie wyświetlana jest odległość rozrzutu?',
57
+ answer: 'Odległość w calach pojawia się jako pływająca etykieta w punkcie trafienia, umieszczona wzdłuż kierunku odchylenia. Czerwona strzałka kompasu również blokuje się na końcowym kącie, co ułatwia szybkie ustawienie szablonu.',
58
+ },
59
+ {
60
+ question: 'Czy mogę wyłączyć animację, aby uzyskać szybsze wyniki?',
61
+ answer: 'Animacja trwa około dwóch sekund, po czym wynik końcowy wyświetla się na środku, a strzałka kompasu się blokuje. Obecnie nie ma opcji pominięcia, ale opóźnienie ma odpowiadać tempu rzucania fizycznymi kośćmi.',
62
+ },
63
+ ];
64
+
65
+ const howTo = [
66
+ {
67
+ name: 'Skonfiguruj Zasady',
68
+ text: 'Wybierz sektory kompasu, ustaw kość dystansu i dostosuj szansę trafienia bezpośredniego.',
69
+ },
70
+ {
71
+ name: 'Rzuć lub Przeciągnij',
72
+ text: 'Kliknij Rzuć Rozrzut, aby symulować odchylenie, lub przeciągnij koło kompasu, aby ręcznie dostosować kierunek.',
73
+ },
74
+ {
75
+ name: 'Odczytaj Wynik',
76
+ text: 'Sprawdź centralny wyświetlacz i strzałkę wektorową, aby poznać dokładną odległość, kąt i kierunek rozrzutu.',
77
+ },
78
+ {
79
+ name: 'Obserwuj Trajektorię',
80
+ text: 'Po rzucie obserwuj animowany pocisk przemieszczający się po kompasie. Przerywana linia pokazuje ścieżkę odchylenia, a punkt trafienia wyświetla odległość w calach.',
81
+ },
82
+ {
83
+ name: 'Zinterpretuj Wynik',
84
+ text: 'Zielony impuls z napisem „DIRECT HIT" oznacza zerowe odchylenie. Czerwony wybuch z etykietą odległości oznacza, że strzał się rozrzucił - umieść szablon w tej odległości od celu w kierunku wskazanym przez strzałkę.',
85
+ },
86
+ ];
87
+
88
+ export const content: ScatterSelectorLocaleContent = {
89
+ slug: 'wybor-kierunku-rozrzutu',
90
+ title: 'Selektor Kierunku Rozrzutu: Kompas Taktyczny do Gier Figurkowych',
91
+ description: 'Określaj losowe odchylenia, dryf wiatru i kierunki rozrzutu dla gier figurkowych za pomocą trójwymiarowego kompasu dotykowego.',
92
+ ui,
93
+ seo: [
94
+ { type: 'title', text: 'Interaktywny Kompas Rozrzutu z Animacją Pocisku w Czasie Rzeczywistym', level: 2 },
95
+ { type: 'paragraph', html: 'Selektor Kierunku Rozrzutu wykracza poza statyczne generowanie liczb, wyświetlając animowaną trajektorię pocisku bezpośrednio na nakładce kompasu. Po kliknięciu Rzuć Rozrzut świecący pocisk przemieszcza się od środka wzdłuż kąta odchylenia, pozostawiając przerywaną linię i wybuchając w cząsteczki w punkcie trafienia.' },
96
+ { type: 'stats', items: [
97
+ { value: '2', label: 'Systemy Sektorów', icon: 'mdi:compass-rose' },
98
+ { value: '4', label: 'Ustawienia Kości', icon: 'mdi:dice-d6' },
99
+ { value: '0-100%', label: 'Zakres Szansy Trafienia', icon: 'mdi:target' },
100
+ { value: '10', label: 'Historia Ostatnich Rzutów', icon: 'mdi:history' },
101
+ ], columns: 4 },
102
+ { type: 'title', text: 'Jak Animacja Trajektorii Poprawia Decyzje Taktyczne', level: 3 },
103
+ { type: 'paragraph', html: 'Tradycyjne narzędzia wyświetlają numeryczny kąt i dystans, zmuszając graczy do mentalnej wizualizacji przesunięcia na stole. Animowana trajektoria wypełnia tę lukę, rysując dokładną ścieżkę lotu od punktu celowania do strefy lądowania rozrzutu.' },
104
+ { type: 'diagnostic', variant: 'success', title: 'Trafienie Bezpośrednie', html: 'Gdy rzut przekroczy szansę trafienia, środek kompasu rozbłyska pulsującymi zielonymi pierścieniami i animacją tekstu „DIRECT HIT". Pocisk wraca do środka, potwierdzając idealne trafienie bez odchylenia.' },
105
+ { type: 'diagnostic', variant: 'error', title: 'Rozrzut', html: 'Przy wyniku rozrzutu pocisk podąża przerywaną trajektorią do punktu lądowania. Wybuch cząstek, świecący znacznik i odległość w calach (np. <strong>5"</strong>) pojawiają się w miejscu trafienia.' },
106
+ { type: 'tip', title: 'Porada: Używanie Trybu Dryfu Wiatru', html: 'Włącz Dryf Wiatru, aby zablokować kierunek rozrzutu na ręcznie ustawiony kąt kompasu. Symuluje to dominujący wiatr lub stały wektor przesunięcia - idealne dla niekierowanych rakiet, chmur gazowych czy nieudanych teleportacji.' },
107
+ ],
108
+ faq,
109
+ bibliography,
110
+ howTo,
111
+ schemas: [
112
+ {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'FAQPage',
115
+ 'mainEntity': faq.map((f) => ({
116
+ '@type': 'Question',
117
+ 'name': f.question,
118
+ 'acceptedAnswer': {
119
+ '@type': 'Answer',
120
+ 'text': f.answer,
121
+ },
122
+ })),
123
+ },
124
+ {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ 'name': 'Selektor Kierunku Rozrzutu',
128
+ 'operatingSystem': 'All',
129
+ 'applicationCategory': 'UtilitiesApplication',
130
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
131
+ },
132
+ {
133
+ '@context': 'https://schema.org',
134
+ '@type': 'HowTo',
135
+ 'name': 'Jak używać Selektor Kierunku Rozrzutu',
136
+ 'step': howTo.map((h) => ({
137
+ '@type': 'HowToStep',
138
+ 'name': h.name,
139
+ 'text': h.text,
140
+ })),
141
+ },
142
+ ],
143
+ };
@@ -0,0 +1,143 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ScatterSelectorLocaleContent } from '../entry';
3
+
4
+ const ui = {
5
+ title: 'Seletor de Direç\u00e3o de Desvio',
6
+ setupTitle: 'Configuraç\u00f5es de Desvio',
7
+ sectorsLabel: 'Setores da Bússola',
8
+ sectors8: '8 Direç\u00f5es',
9
+ sectors12: '12 Direç\u00f5es (Relógio)',
10
+ diceLabel: 'Rolagem de Dist\u00e2ncia de Desvio',
11
+ diceD6: '1D6 Polegadas',
12
+ dice2D6: '2D6 Polegadas',
13
+ diceD10: '1D10 Polegadas',
14
+ diceCustom: 'Intervalo Personalizado',
15
+ customMaxLabel: 'Dist\u00e2ncia Máxima',
16
+ hitChanceLabel: 'Probabilidade de Acerto Direto (%)',
17
+ rollButton: 'Rolar Desvio',
18
+ hitResult: 'Acerto Direto!',
19
+ scatterResult: 'Desvio!',
20
+ distanceLabel: 'Dist\u00e2ncia',
21
+ angleLabel: '\u00c2ngulo',
22
+ dragHint: 'Arraste a bússola para ajustar a direç\u00e3o do vento manualmente',
23
+ historyTitle: 'Rolagens Recentes',
24
+ clearHistory: 'Limpar Histórico',
25
+ presetTitle: 'Predefiniç\u00f5es de Wargaming',
26
+ soundOn: 'Som Ativado',
27
+ soundOff: 'Som Desativado',
28
+ guideStep1: 'Arraste a bússola para alinhar com sua mesa de jogo',
29
+ guideStep2: 'Escolha setores, dados e probabilidade de acerto direto',
30
+ guideStep3: 'Centro = seu alvo. O brilho verde significa que caiu exatamente ali',
31
+ guideStep3Scatter: 'Seta = direç\u00e3o de desvio. Mova o tiro do centro essa quantidade de polegadas ao longo da seta',
32
+ scatterModeLabel: 'Direç\u00e3o de Desvio',
33
+ scatterModeRandom: 'Aleatória',
34
+ scatterModeWind: 'Deriva do Vento',
35
+ scatterModeWindHint: 'A seta sempre segue a bússola - apenas a dist\u00e2ncia é aleatória',
36
+ };
37
+
38
+ const faq = [
39
+ {
40
+ question: 'Como funciona o Seletor de Direç\u00e3o de Desvio?',
41
+ answer: 'Ele calcula um \u00e2ngulo aleatório (0-359 graus) e uma dist\u00e2ncia com base na configuraç\u00e3o de dados selecionada. Também simula um dado de desvio, verificando acertos diretos.',
42
+ },
43
+ {
44
+ question: 'Posso mudar o formato dos setores?',
45
+ answer: 'Sim, voc\u00ea pode alternar entre setores cardeais de 8 direç\u00f5es e setores de 12 direç\u00f5es no formato de relógio.',
46
+ },
47
+ {
48
+ question: 'O que é a probabilidade de acerto direto?',
49
+ answer: 'Representa a chance de o projétil atingir exatamente o local mirado sem qualquer desvio, simulando um resultado "Acerto" em um dado de desvio padr\u00e3o.',
50
+ },
51
+ {
52
+ question: 'Isso é compatível com Warhammer ou Bolt Action?',
53
+ answer: 'Sim, ele suporta gabaritos padr\u00e3o de 8 direç\u00f5es e alinhamentos de relógio de 12 direç\u00f5es usados na maioria dos wargames táticos e sistemas de miniaturas.',
54
+ },
55
+ {
56
+ question: 'Como a dist\u00e2ncia de desvio é exibida visualmente?',
57
+ answer: 'A dist\u00e2ncia em polegadas aparece como um rótulo flutuante no ponto de impacto, posicionado na direç\u00e3o de desvio. A seta vermelha da bússola também trava no \u00e2ngulo final para alinhamento rápido do gabarito.',
58
+ },
59
+ {
60
+ question: 'Posso desativar a animaç\u00e3o para obter resultados mais rápidos?',
61
+ answer: 'A animaç\u00e3o dura aproximadamente dois segundos, após os quais o resultado final é exibido no centro e a seta da bússola trava. Atualmente n\u00e3o há opç\u00e3o de pular, mas o atraso foi projetado para acompanhar o ritmo de rolar dados físicos.',
62
+ },
63
+ ];
64
+
65
+ const howTo = [
66
+ {
67
+ name: 'Configurar Regras',
68
+ text: 'Selecione os setores da bússola, escolha um dado de dist\u00e2ncia e ajuste a probabilidade de acerto direto.',
69
+ },
70
+ {
71
+ name: 'Rolar ou Arrastar',
72
+ text: 'Clique em Rolar Desvio para simular o desvio, ou arraste a roda da bússola para ajustar a direç\u00e3o manualmente.',
73
+ },
74
+ {
75
+ name: 'Ler o Resultado',
76
+ text: 'Verifique o display central e a seta vetorial para encontrar a dist\u00e2ncia, o \u00e2ngulo e a direç\u00e3o exatos do desvio.',
77
+ },
78
+ {
79
+ name: 'Observar a Trajetória',
80
+ text: 'Após rolar, veja o projétil animado viajar pela bússola. O rastro tracejado mostra o caminho de desvio e o ponto de impacto exibe a dist\u00e2ncia em polegadas.',
81
+ },
82
+ {
83
+ name: 'Interpretar o Resultado',
84
+ text: 'Um pulso verde com "DIRECT HIT" significa desvio zero. Uma explos\u00e3o vermelha com um rótulo de dist\u00e2ncia significa que o tiro desviou - coloque seu gabarito a essa dist\u00e2ncia do alvo na direç\u00e3o da seta.',
85
+ },
86
+ ];
87
+
88
+ export const content: ScatterSelectorLocaleContent = {
89
+ slug: 'seletor-de-direcao-de-desvio',
90
+ title: 'Seletor de Direç\u00e3o de Desvio: Bússola Tátil para Wargames de Miniaturas',
91
+ description: 'Determine desvios aleatórios, deriva do vento e direç\u00f5es de dispers\u00e3o para wargames de miniaturas usando uma bússola tátil 3D.',
92
+ ui,
93
+ seo: [
94
+ { type: 'title', text: 'Bússola Interativa de Desvio com Animaç\u00e3o de Projétil em Tempo Real', level: 2 },
95
+ { type: 'paragraph', html: 'O Seletor de Direç\u00e3o de Desvio vai além da simples geraç\u00e3o de números ao renderizar uma trajetória animada do projétil diretamente sobre a bússola. Quando voc\u00ea clica em Rolar Desvio, um projétil brilhante viaja do centro ao longo do \u00e2ngulo de desvio, deixando um rastro tracejado e explodindo em partículas no ponto de impacto.' },
96
+ { type: 'stats', items: [
97
+ { value: '2', label: 'Sistemas de Setores', icon: 'mdi:compass-rose' },
98
+ { value: '4', label: 'Predefiniç\u00f5es de Dados', icon: 'mdi:dice-d6' },
99
+ { value: '0-100%', label: 'Faixa de Probabilidade de Acerto', icon: 'mdi:target' },
100
+ { value: '10', label: 'Histórico de Rolagens Recentes', icon: 'mdi:history' },
101
+ ], columns: 4 },
102
+ { type: 'title', text: 'Como a Animaç\u00e3o de Trajetória Melhora a Tomada de Decis\u00e3o em Wargames', level: 3 },
103
+ { type: 'paragraph', html: 'Ferramentas tradicionais exibem um \u00e2ngulo e uma dist\u00e2ncia numéricos, forçando os jogadores a visualizar mentalmente o deslocamento na mesa. A trajetória animada preenche essa lacuna desenhando a rota de voo exata do ponto de mira até a zona de impacto do desvio.' },
104
+ { type: 'diagnostic', variant: 'success', title: 'Acerto Direto', html: 'Quando a rolagem supera a probabilidade de acerto, o centro da bússola explode com anéis verdes pulsantes e uma animaç\u00e3o de texto "DIRECT HIT". O projétil retorna ao centro, confirmando um impacto perfeito sem desvio.' },
105
+ { type: 'diagnostic', variant: 'error', title: 'Desvio', html: 'Em um resultado de desvio, o projétil segue uma trajetória tracejada até seu ponto de aterrissagem. Uma explos\u00e3o de partículas, um marcador brilhante e a dist\u00e2ncia em polegadas (ex. <strong>5"</strong>) aparecem no local do impacto.' },
106
+ { type: 'tip', title: 'Dica: Usar o Modo Deriva do Vento', html: 'Ative a Deriva do Vento para travar a direç\u00e3o de desvio no \u00e2ngulo da bússola ajustado manualmente. Isso simula um vento predominante ou um vetor de deslocamento fixo - ideal para foguetes n\u00e3o guiados, nuvens de gás ou acidentes de teletransporte.' },
107
+ ],
108
+ faq,
109
+ bibliography,
110
+ howTo,
111
+ schemas: [
112
+ {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'FAQPage',
115
+ 'mainEntity': faq.map((f) => ({
116
+ '@type': 'Question',
117
+ 'name': f.question,
118
+ 'acceptedAnswer': {
119
+ '@type': 'Answer',
120
+ 'text': f.answer,
121
+ },
122
+ })),
123
+ },
124
+ {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ 'name': 'Seletor de Direç\u00e3o de Desvio',
128
+ 'operatingSystem': 'All',
129
+ 'applicationCategory': 'UtilitiesApplication',
130
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.',
131
+ },
132
+ {
133
+ '@context': 'https://schema.org',
134
+ '@type': 'HowTo',
135
+ 'name': 'Como usar o Seletor de Direç\u00e3o de Desvio',
136
+ 'step': howTo.map((h) => ({
137
+ '@type': 'HowToStep',
138
+ 'name': h.name,
139
+ 'text': h.text,
140
+ })),
141
+ },
142
+ ],
143
+ };