@jjlmoya/utils-tabletop 1.17.0 → 1.19.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 (62) hide show
  1. package/package.json +5 -3
  2. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  3. package/src/tests/seo_parity.test.ts +60 -0
  4. package/src/tests/translation_copy.test.ts +124 -0
  5. package/src/tool/board-game-timer/components/SetupPanel.astro +8 -8
  6. package/src/tool/board-game-timer/modules/particles.ts +4 -4
  7. package/src/tool/decision-wheel/i18n/de.ts +28 -0
  8. package/src/tool/decision-wheel/i18n/es.ts +28 -0
  9. package/src/tool/decision-wheel/i18n/fr.ts +28 -0
  10. package/src/tool/decision-wheel/i18n/id.ts +28 -0
  11. package/src/tool/decision-wheel/i18n/it.ts +28 -0
  12. package/src/tool/decision-wheel/i18n/ja.ts +28 -0
  13. package/src/tool/decision-wheel/i18n/ko.ts +28 -0
  14. package/src/tool/decision-wheel/i18n/nl.ts +28 -0
  15. package/src/tool/decision-wheel/i18n/pl.ts +28 -0
  16. package/src/tool/decision-wheel/i18n/pt.ts +28 -0
  17. package/src/tool/decision-wheel/i18n/sv.ts +28 -0
  18. package/src/tool/decision-wheel/i18n/tr.ts +28 -0
  19. package/src/tool/decision-wheel/i18n/zh.ts +28 -0
  20. package/src/tool/decision-wheel/ui.ts +1 -1
  21. package/src/tool/dice-roller-simulator/client.ts +13 -11
  22. package/src/tool/dice-roller-simulator/components/DiceGrid.astro +1 -1
  23. package/src/tool/fantasy-runes-translator/client.ts +1 -1
  24. package/src/tool/fantasy-runes-translator/component.astro +2 -2
  25. package/src/tool/first-player-selector/client.ts +1 -1
  26. package/src/tool/hidden-role-dealer/component.astro +10 -8
  27. package/src/tool/hidden-role-dealer/i18n/de.ts +10 -1
  28. package/src/tool/hidden-role-dealer/i18n/fr.ts +4 -1
  29. package/src/tool/hidden-role-dealer/i18n/id.ts +11 -1
  30. package/src/tool/hidden-role-dealer/i18n/it.ts +11 -1
  31. package/src/tool/hidden-role-dealer/i18n/ja.ts +11 -1
  32. package/src/tool/hidden-role-dealer/i18n/ko.ts +11 -1
  33. package/src/tool/hidden-role-dealer/i18n/nl.ts +11 -1
  34. package/src/tool/hidden-role-dealer/i18n/pl.ts +11 -1
  35. package/src/tool/hidden-role-dealer/i18n/pt.ts +11 -1
  36. package/src/tool/hidden-role-dealer/i18n/ru.ts +11 -1
  37. package/src/tool/hidden-role-dealer/i18n/sv.ts +11 -1
  38. package/src/tool/hidden-role-dealer/i18n/tr.ts +11 -1
  39. package/src/tool/hidden-role-dealer/i18n/zh.ts +11 -1
  40. package/src/tool/investigation-board/boardContextMenu.ts +1 -1
  41. package/src/tool/investigation-board/components/ControlPanel.astro +1 -1
  42. package/src/tool/investigation-board/renderer.ts +2 -2
  43. package/src/tool/lunar-tide-tracker/client.ts +2 -2
  44. package/src/tool/lunar-tide-tracker/component.astro +1 -1
  45. package/src/tool/scatter-direction-selector/client.ts +5 -5
  46. package/src/tool/scatter-direction-selector/component.astro +2 -2
  47. package/src/tool/scatter-direction-selector/i18n/de.ts +9 -0
  48. package/src/tool/scatter-direction-selector/i18n/es.ts +9 -0
  49. package/src/tool/scatter-direction-selector/i18n/fr.ts +9 -0
  50. package/src/tool/scatter-direction-selector/i18n/id.ts +9 -0
  51. package/src/tool/scatter-direction-selector/i18n/it.ts +9 -0
  52. package/src/tool/scatter-direction-selector/i18n/ja.ts +9 -0
  53. package/src/tool/scatter-direction-selector/i18n/ko.ts +9 -0
  54. package/src/tool/scatter-direction-selector/i18n/nl.ts +9 -0
  55. package/src/tool/scatter-direction-selector/i18n/pl.ts +9 -0
  56. package/src/tool/scatter-direction-selector/i18n/pt.ts +9 -0
  57. package/src/tool/scatter-direction-selector/i18n/ru.ts +9 -0
  58. package/src/tool/scatter-direction-selector/i18n/sv.ts +9 -0
  59. package/src/tool/scatter-direction-selector/i18n/tr.ts +9 -0
  60. package/src/tool/scatter-direction-selector/i18n/zh.ts +9 -0
  61. package/src/tool/score-tracker/client.ts +2 -2
  62. package/src/tool/score-tracker/components/PlayerSetup.astro +1 -0
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Wie wird die Streudistanz visuell dargestellt?',
61
61
  answer: 'Die Distanz in Zoll erscheint als schwebende Markierung am Einschlagpunkt entlang der Abweichungsrichtung. Der rote Kompasspfeil fixiert sich auf den endgültigen Winkel für eine schnelle Schablonenausrichtung.',
62
62
  },
63
+ { question: 'Wie wird die Streurichtung bestimmt?', answer: 'Das Tool kombiniert das gewählte Sektorsystem mit dem Würfelwurf und der eingestellten Abweichungsdistanz.' },
64
+ { question: 'Kann ich Winddrift verwenden?', answer: 'Ja, im Winddrift-Modus folgt die Richtung dem gedrehten Kompass, während die Entfernung zufällig bleibt.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Direkttreffer', html: 'Wenn der Wurf die Trefferwahrscheinlichkeit übertrifft, erstrahlt die Kompassmitte in pulsierenden grünen Ringen und einer "DIRECT HIT"-Textanimation. Das Projektil kehrt zur Mitte zurück und bestätigt einen perfekten Treffer ohne Abweichung.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Streuung', html: 'Bei einem Streuergebnis folgt das Projektil einer gestrichelten Bahn zum Einschlagspunkt. Eine Partikelexplosion, eine leuchtende Markierung und die Distanz in Zoll (z. B. <strong>5"</strong>) erscheinen am Landeort.' },
106
108
  { type: 'tip', title: 'Profi Tipp: Winddrift Modus nutzen', html: 'Aktiviere Winddrift, um die Streurichtung auf den manuell eingestellten Kompasswinkel zu fixieren. Simuliert vorherrschenden Wind oder einen festen Verschiebungsvektor - ideal für ungelenkte Raketen, Gaswolken oder fehlgeschlagene Teleportationen.' },
109
+ { type: 'title', text: 'Streuung in Tabletop Spielen auflösen', level: 2 },
110
+ { type: 'paragraph', html: 'Viele Wargames verwenden Abweichungen, um Artillerie, Winddrift oder fehlgeschlagene Teleportationen unvorhersehbar zu machen.' },
111
+ { type: 'table', headers: ['Streuung in Tabletop Spielen auflösen', 'Taktischer Umgang mit Wind und Abweichung', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Taktischer Umgang mit Wind und Abweichung', level: 2 },
113
+ { type: 'paragraph', html: 'Eine Trefferwahrscheinlichkeit hilft, die Zuverlässigkeit einer Einheit einzuschätzen und die Messung am Spieltisch zu beschleunigen.' },
114
+ { type: 'comparative', items: [{ title: 'Streuung in Tabletop Spielen auflösen', description: 'Viele Wargames verwenden Abweichungen, um Artillerie, Winddrift oder fehlgeschlagene Teleportationen unvorhersehbar zu machen.', icon: 'mdi:compass-outline', highlight: true, points: ['Taktischer Umgang mit Wind und Abweichung'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Taktischer Umgang mit Wind und Abweichung', definition: 'Eine Trefferwahrscheinlichkeit hilft, die Zuverlässigkeit einer Einheit einzuschätzen und die Messung am Spieltisch zu beschleunigen.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: '¿Puedo desactivar la animación para obtener resultados más rápidos?',
61
61
  answer: 'La animación dura aproximadamente dos segundos, tras los cuales el resultado final se muestra en el centro y la flecha de la brújula se bloquea. Actualmente no hay opción de salto, pero la demora está diseñada para igualar el ritmo de tirar dados físicos.',
62
62
  },
63
+ { question: '¿Cómo se determina la dirección de dispersión?', answer: 'La herramienta combina el sistema de sectores elegido con la tirada y la distancia de desviación configurada.' },
64
+ { question: '¿Puedo usar el modo de viento?', answer: 'Sí, el modo de viento fija la dirección al compás girado y mantiene aleatoria la distancia.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Impacto Directo', html: 'Cuando la tirada supera la probabilidad de impacto, el centro de la brújula estalla con anillos verdes pulsantes y una animación de texto "DIRECT HIT". El proyectil regresa al centro, confirmando un impacto perfecto sin desviación.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Desviación', html: 'En un resultado de desviación, el proyectil sigue una trayectoria discontinua hasta su punto de aterrizaje. Una explosión de partículas, un marcador brillante y la distancia en pulgadas (ej. <strong>5"</strong>) aparecen en el lugar del impacto.' },
106
108
  { type: 'tip', title: 'Consejo: Usar el Modo de Deriva del Viento', html: 'Activa la Deriva del Viento para bloquear la dirección de desviación al ángulo de la brújula que ajustes manualmente. Simula viento predominante o un vector de desplazamiento fijo - ideal para cohetes no guiados, nubes de gas o teletransportaciones fallidas.' },
109
+ { type: 'title', text: 'Resolver la dispersión en wargames', level: 2 },
110
+ { type: 'paragraph', html: 'Muchos wargames usan desviaciones para representar artillería, viento o teletransportes fallidos de forma imprevisible.' },
111
+ { type: 'table', headers: ['Resolver la dispersión en wargames', 'Gestionar el viento y la desviación', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Gestionar el viento y la desviación', level: 2 },
113
+ { type: 'paragraph', html: 'La probabilidad de impacto ayuda a valorar la fiabilidad de una unidad y agiliza las mediciones durante la partida.' },
114
+ { type: 'comparative', items: [{ title: 'Resolver la dispersión en wargames', description: 'Muchos wargames usan desviaciones para representar artillería, viento o teletransportes fallidos de forma imprevisible.', icon: 'mdi:compass-outline', highlight: true, points: ['Gestionar el viento y la desviación'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Gestionar el viento y la desviación', definition: 'La probabilidad de impacto ayuda a valorar la fiabilidad de una unidad y agiliza las mediciones durante la partida.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Puis-je désactiver l\u2019animation pour obtenir des résultats plus rapides\u00a0?',
61
61
  answer: 'L\u2019animation dure environ deux secondes, après quoi le résultat final s\u2019affiche au centre et la flèche de la boussole se verrouille. Il n\u2019y a pas d\u2019option de saut actuellement, mais le délai est conçu pour correspondre au rythme du lancer de dés physiques.',
62
62
  },
63
+ { question: 'Comment la direction de dispersion est-elle calculée ?', answer: 'L\'outil combine le système de secteurs choisi avec le lancer et la distance de déviation configurée.' },
64
+ { question: 'Puis-je utiliser le mode de vent ?', answer: 'Oui, ce mode suit l\'angle du compas tout en gardant la distance aléatoire.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Impact Direct', html: 'Quand le jet dépasse la probabilité d\u2019impact, le centre de la boussole s\u2019illumine d\u2019anneaux verts pulsants avec une animation "DIRECT HIT". Le projectile retourne au centre, confirmant un impact parfait sans déviation.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Déviation', html: 'Sur un résultat de déviation, le projectile suit une trajectoire en pointillés jusqu\u2019à son point d\u2019atterrissage. Une explosion de particules, un marqueur lumineux et la distance en pouces (ex. <strong>5"</strong>) apparaissent sur le lieu d\u2019impact.' },
106
108
  { type: 'tip', title: 'Astuce\u00a0: Utiliser le Mode Dérive du Vent', html: 'Active la Dérive du Vent pour verrouiller la direction de déviation sur l\u2019angle de boussole réglé manuellement. Cela simule un vent dominant ou un vecteur de déplacement fixe - idéal pour les roquettes non guidées, les nuages de gaz ou les incidents de téléportation.' },
109
+ { type: 'title', text: 'Résoudre la dispersion dans les wargames', level: 2 },
110
+ { type: 'paragraph', html: 'De nombreux wargames utilisent la déviation pour représenter l\'artillerie, le vent ou les téléportations ratées.' },
111
+ { type: 'table', headers: ['Résoudre la dispersion dans les wargames', 'Gérer le vent et la déviation', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Gérer le vent et la déviation', level: 2 },
113
+ { type: 'paragraph', html: 'La probabilité de toucher aide à évaluer la fiabilité d\'une unité et accélère les mesures pendant la partie.' },
114
+ { type: 'comparative', items: [{ title: 'Résoudre la dispersion dans les wargames', description: 'De nombreux wargames utilisent la déviation pour représenter l\'artillerie, le vent ou les téléportations ratées.', icon: 'mdi:compass-outline', highlight: true, points: ['Gérer le vent et la déviation'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Gérer le vent et la déviation', definition: 'La probabilité de toucher aide à évaluer la fiabilité d\'une unité et accélère les mesures pendant la partie.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Bisakah saya menonaktifkan animasi untuk mendapatkan hasil lebih cepat?',
61
61
  answer: 'Animasi berlangsung sekitar dua detik, setelah itu hasil akhir ditampilkan di tengah dan panah kompas terkunci. Saat ini tidak ada opsi lewati, tetapi penundaan ini dirancang agar sesuai dengan kecepatan melempar dadu fisik.',
62
62
  },
63
+ { question: 'Bagaimana arah sebaran ditentukan?', answer: 'Alat ini menggabungkan sistem sektor yang dipilih dengan lemparan dadu dan jarak deviasi.' },
64
+ { question: 'Bisakah saya memakai mode angin?', answer: 'Ya, mode angin mengikuti sudut kompas dan membuat jaraknya tetap acak.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Pukulan Langsung', html: 'Saat lemparan melebihi probabilitas pukulan, pusat kompas meletup dengan cincin hijau berdenyut dan animasi teks "DIRECT HIT". Proyektil kembali ke pusat, mengonfirmasi tumbukan sempurna tanpa deviasi.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Hamburan', html: 'Pada hasil hamburan, proyektil mengikuti lintasan putus-putus ke titik pendaratannya. Ledakan partikel, penanda bercahaya, dan jarak dalam inci (mis. <strong>5"</strong>) muncul di lokasi tumbukan.' },
106
108
  { type: 'tip', title: 'Tips: Menggunakan Mode Hanyutan Angin', html: 'Aktifkan Hanyutan Angin untuk mengunci arah hamburan ke sudut kompas yang Anda atur secara manual. Ini mensimulasikan angin kencang atau vektor perpindahan tetap - ideal untuk roket tanpa kendali, awan gas, atau kecelakaan teleportasi.' },
109
+ { type: 'title', text: 'Menyelesaikan deviasi dalam wargame', level: 2 },
110
+ { type: 'paragraph', html: 'Banyak wargame memakai deviasi untuk mensimulasikan artileri, angin, atau teleportasi yang gagal.' },
111
+ { type: 'table', headers: ['Menyelesaikan deviasi dalam wargame', 'Mengelola angin dan deviasi', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Mengelola angin dan deviasi', level: 2 },
113
+ { type: 'paragraph', html: 'Peluang mengenai sasaran membantu menilai keandalan unit dan mempercepat pengukuran selama permainan.' },
114
+ { type: 'comparative', items: [{ title: 'Menyelesaikan deviasi dalam wargame', description: 'Banyak wargame memakai deviasi untuk mensimulasikan artileri, angin, atau teleportasi yang gagal.', icon: 'mdi:compass-outline', highlight: true, points: ['Mengelola angin dan deviasi'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Mengelola angin dan deviasi', definition: 'Peluang mengenai sasaran membantu menilai keandalan unit dan mempercepat pengukuran selama permainan.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Posso disattivare l\u2019animazione per ottenere risultati più veloci?',
61
61
  answer: 'L\u2019animazione dura circa due secondi, dopo i quali il risultato finale viene mostrato al centro e la freccia della bussola si blocca. Al momento non c\u2019è un\u2019opzione per saltarla, ma il ritardo è studiato per riprodurre il ritmo del lancio fisico dei dadi.',
62
62
  },
63
+ { question: 'Come viene determinata la direzione della dispersione?', answer: 'Lo strumento combina il sistema di settori scelto con il tiro e la distanza di deviazione impostata.' },
64
+ { question: 'Posso usare la modalità vento?', answer: 'Sì, la modalità vento segue l\'angolo della bussola lasciando casuale la distanza.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Impatto Diretto', html: 'Quando il tiro supera la probabilità d\u2019impatto, il centro della bussola si illumina con anelli verdi pulsanti e un\u2019animazione "DIRECT HIT". Il proiettile torna al centro, confermando un impatto perfetto senza deviazione.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Deviazione', html: 'Su un risultato di deviazione, il proiettile segue una traiettoria tratteggiata fino al punto d\u2019atterraggio. Un\u2019esplosione di particelle, un indicatore luminoso e la distanza in pollici (es. <strong>5"</strong>) appaiono nel punto d\u2019impatto.' },
106
108
  { type: 'tip', title: 'Consiglio: Usare la Modalità Deriva del Vento', html: 'Attiva la Deriva del Vento per bloccare la direzione di deviazione sull\u2019angolo della bussola impostato manualmente. Simula un vento prevalente o un vettore di spostamento fisso - ideale per razzi non guidati, nubi di gas o incidenti di teletrasporto.' },
109
+ { type: 'title', text: 'Gestire la dispersione nei wargame', level: 2 },
110
+ { type: 'paragraph', html: 'Molti wargame usano la deviazione per simulare artiglieria, vento o teletrasporti falliti.' },
111
+ { type: 'table', headers: ['Gestire la dispersione nei wargame', 'Controllare vento e deviazione', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Controllare vento e deviazione', level: 2 },
113
+ { type: 'paragraph', html: 'La probabilità di colpire aiuta a valutare l\'affidabilità di un\'unità e velocizza le misurazioni in partita.' },
114
+ { type: 'comparative', items: [{ title: 'Gestire la dispersione nei wargame', description: 'Molti wargame usano la deviazione per simulare artiglieria, vento o teletrasporti falliti.', icon: 'mdi:compass-outline', highlight: true, points: ['Controllare vento e deviazione'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Controllare vento e deviazione', definition: 'La probabilità di colpire aiuta a valutare l\'affidabilità di un\'unità e velocizza le misurazioni in partita.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: '結果を早く得るためにアニメーションを無効にできますか?',
61
61
  answer: 'アニメーションは約2秒間続き、その後最終結果が中央に表示され、コンパス矢印がロックされます。現在スキップオプションはありませんが、この遅延は物理的なダイスを振るペースに合わせて設計されています。',
62
62
  },
63
+ { question: '散布方向はどのように決まりますか?', answer: '選択したセクター方式とダイス結果、設定した偏差距離を組み合わせて計算します。' },
64
+ { question: '風モードは使えますか?', answer: 'はい。風モードではコンパスの角度に沿って方向を固定し、距離だけをランダムにします。' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: '直撃', html: 'ロールが直撃確率を超えると、コンパス中央が脈動する緑のリングと「DIRECT HIT」テキストアニメーションで噴出します。発射物は中央に戻り、偏差ゼロの完全な衝撃を確認します。' },
105
107
  { type: 'diagnostic', variant: 'error', title: '散乱', html: '散乱結果の場合、発射物は破線の軌道に沿って着弾点に移動します。粒子の爆発、発光マーカー、距離(例: <strong>5"</strong>)が着弾位置に表示されます。' },
106
108
  { type: 'tip', title: 'プロのコツ: 風ドリフトモードの使用', html: '風ドリフトを有効にすると、散乱方向が手動で回転させたコンパス角度に固定されます。これは卓越風や固定変位ベクトルをシミュレートします - 無誘導ロケット、ガス雲、テレポーテーション事故などに最適です。' },
109
+ { type: 'title', text: 'ウォーゲームの散布を解決する', level: 2 },
110
+ { type: 'paragraph', html: '多くのウォーゲームでは、砲撃や風、失敗したテレポートを偏差で表現します。' },
111
+ { type: 'table', headers: ['ウォーゲームの散布を解決する', '風と偏差を管理する', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: '風と偏差を管理する', level: 2 },
113
+ { type: 'paragraph', html: '命中確率を設定すると部隊の信頼性を判断でき、ゲーム中の測定も速くなります。' },
114
+ { type: 'comparative', items: [{ title: 'ウォーゲームの散布を解決する', description: '多くのウォーゲームでは、砲撃や風、失敗したテレポートを偏差で表現します。', icon: 'mdi:compass-outline', highlight: true, points: ['風と偏差を管理する'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: '風と偏差を管理する', definition: '命中確率を設定すると部隊の信頼性を判断でき、ゲーム中の測定も速くなります。' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: '더 빠른 결과를 위해 애니메이션을 비활성화할 수 있나요?',
61
61
  answer: '애니메이션은 약 2초간 지속되며, 그 후 최종 결과가 중앙에 표시되고 나침반 화살표가 고정됩니다. 현재 건너뛰기 옵션은 없지만, 이 지연은 실제 주사위를 굴리는 속도에 맞게 설계되었습니다.',
62
62
  },
63
+ { question: '산란 방향은 어떻게 정하나요?', answer: '선택한 섹터 방식과 주사위 결과, 설정한 편차 거리를 조합해 계산합니다.' },
64
+ { question: '바람 모드를 사용할 수 있나요?', answer: '네, 바람 모드는 나침반 각도를 따르며 거리는 무작위로 유지합니다.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: '직격', html: '롤이 직격 확률을 초과하면 나침반 중앙이 맥동하는 녹색 링과 "DIRECT HIT" 텍스트 애니메이션으로 폭발합니다. 발사체는 중앙으로 돌아와 편차 없는 완벽한 충돌을 확인합니다.' },
105
107
  { type: 'diagnostic', variant: 'error', title: '산탄', html: '산탄 결과의 경우 발사체가 점선 궤적을 따라 착륙 지점으로 이동합니다. 입자 폭발, 발광 마커, 거리(인치) (예: <strong>5"</strong>)가 충돌 위치에 나타납니다.' },
106
108
  { type: 'tip', title: '전문가 팁: 바람 표류 모드 사용하기', html: '바람 표류를 활성화하면 산탄 방향이 수동으로 회전한 나침반 각도에 고정됩니다. 이는 우세풍이나 고정 변위 벡터를 시뮬레이션합니다 - 무유도 로켓, 가스 구름, 순간이동 사고 등에 이상적입니다.' },
109
+ { type: 'title', text: '워게임의 산란 해결하기', level: 2 },
110
+ { type: 'paragraph', html: '많은 워게임은 포격, 바람, 실패한 순간이동을 편차로 표현합니다.' },
111
+ { type: 'table', headers: ['워게임의 산란 해결하기', '바람과 편차 관리하기', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: '바람과 편차 관리하기', level: 2 },
113
+ { type: 'paragraph', html: '명중 확률을 설정하면 유닛의 신뢰성을 판단하고 게임 중 측정을 빠르게 할 수 있습니다.' },
114
+ { type: 'comparative', items: [{ title: '워게임의 산란 해결하기', description: '많은 워게임은 포격, 바람, 실패한 순간이동을 편차로 표현합니다.', icon: 'mdi:compass-outline', highlight: true, points: ['바람과 편차 관리하기'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: '바람과 편차 관리하기', definition: '명중 확률을 설정하면 유닛의 신뢰성을 판단하고 게임 중 측정을 빠르게 할 수 있습니다.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Hoe wordt de afwijkingsafstand visueel weergegeven?',
61
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
62
  },
63
+ { question: 'Hoe wordt de spreidingsrichting bepaald?', answer: 'De tool combineert het gekozen sectorsysteem met de worp en de ingestelde afwijkingsafstand.' },
64
+ { question: 'Kan ik de windmodus gebruiken?', answer: 'Ja, de windmodus volgt de kompasrichting terwijl de afstand willekeurig blijft.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { 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
107
  { 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
108
  { 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.' },
109
+ { type: 'title', text: 'Spreiding in tabletop wargames oplossen', level: 2 },
110
+ { type: 'paragraph', html: 'Veel wargames gebruiken afwijkingen voor artillerie, wind of mislukte teleportatie.' },
111
+ { type: 'table', headers: ['Spreiding in tabletop wargames oplossen', 'Wind en afwijking beheren', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Wind en afwijking beheren', level: 2 },
113
+ { type: 'paragraph', html: 'Met een trefferkans beoordeel je de betrouwbaarheid van een eenheid en verkort je metingen tijdens het spel.' },
114
+ { type: 'comparative', items: [{ title: 'Spreiding in tabletop wargames oplossen', description: 'Veel wargames gebruiken afwijkingen voor artillerie, wind of mislukte teleportatie.', icon: 'mdi:compass-outline', highlight: true, points: ['Wind en afwijking beheren'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Wind en afwijking beheren', definition: 'Met een trefferkans beoordeel je de betrouwbaarheid van een eenheid en verkort je metingen tijdens het spel.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Czy mogę wyłączyć animację, aby uzyskać szybsze wyniki?',
61
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
62
  },
63
+ { question: 'Jak wyznaczany jest kierunek rozrzutu?', answer: 'Narzędzie łączy wybrany system sektorów z rzutem i ustawioną odległością odchylenia.' },
64
+ { question: 'Czy mogę używać trybu wiatru?', answer: 'Tak, tryb wiatru podąża za kątem kompasu, a odległość pozostaje losowa.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { 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
107
  { 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
108
  { 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.' },
109
+ { type: 'title', text: 'Rozwiązywanie rozrzutu w grach wojennych', level: 2 },
110
+ { type: 'paragraph', html: 'Wiele gier wojennych używa odchylenia do symulowania artylerii, wiatru i nieudanych teleportacji.' },
111
+ { type: 'table', headers: ['Rozwiązywanie rozrzutu w grach wojennych', 'Zarządzanie wiatrem i odchyleniem', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Zarządzanie wiatrem i odchyleniem', level: 2 },
113
+ { type: 'paragraph', html: 'Szansa trafienia pomaga ocenić niezawodność jednostki i przyspiesza pomiary podczas rozgrywki.' },
114
+ { type: 'comparative', items: [{ title: 'Rozwiązywanie rozrzutu w grach wojennych', description: 'Wiele gier wojennych używa odchylenia do symulowania artylerii, wiatru i nieudanych teleportacji.', icon: 'mdi:compass-outline', highlight: true, points: ['Zarządzanie wiatrem i odchyleniem'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Zarządzanie wiatrem i odchyleniem', definition: 'Szansa trafienia pomaga ocenić niezawodność jednostki i przyspiesza pomiary podczas rozgrywki.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Posso desativar a animaç\u00e3o para obter resultados mais rápidos?',
61
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
62
  },
63
+ { question: 'Como a direção da dispersão é determinada?', answer: 'A ferramenta combina o sistema de setores escolhido com a rolagem e a distância de desvio configurada.' },
64
+ { question: 'Posso usar o modo de vento?', answer: 'Sim, esse modo segue o ângulo da bússola e mantém a distância aleatória.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { 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
107
  { 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
108
  { 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.' },
109
+ { type: 'title', text: 'Resolver a dispersão em wargames', level: 2 },
110
+ { type: 'paragraph', html: 'Muitos wargames usam desvios para simular artilharia, vento ou teletransportes malsucedidos.' },
111
+ { type: 'table', headers: ['Resolver a dispersão em wargames', 'Gerenciar vento e desvio', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Gerenciar vento e desvio', level: 2 },
113
+ { type: 'paragraph', html: 'A probabilidade de acerto ajuda a avaliar a confiabilidade da unidade e agiliza as medições durante a partida.' },
114
+ { type: 'comparative', items: [{ title: 'Resolver a dispersão em wargames', description: 'Muitos wargames usam desvios para simular artilharia, vento ou teletransportes malsucedidos.', icon: 'mdi:compass-outline', highlight: true, points: ['Gerenciar vento e desvio'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Gerenciar vento e desvio', definition: 'A probabilidade de acerto ajuda a avaliar a confiabilidade da unidade e agiliza as medições durante a partida.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Могу ли я отключить анимацию для более быстрых результатов?',
61
61
  answer: 'Анимация длится примерно две секунды, после чего финальный результат отображается в центре, а стрелка компаса фиксируется. В настоящее время нет возможности пропуска, но задержка соответствует темпу броска физических костей.',
62
62
  },
63
+ { question: 'Как определяется направление рассеивания?', answer: 'Инструмент объединяет выбранную систему секторов, бросок и заданную дистанцию отклонения.' },
64
+ { question: 'Можно ли использовать режим ветра?', answer: 'Да, режим ветра следует углу компаса, а расстояние остаётся случайным.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Прямое Попадание', html: 'Когда бросок превышает вероятность попадания, центр компаса взрывается пульсирующими зелёными кольцами и анимацией текста "DIRECT HIT". Снаряд возвращается в центр, подтверждая идеальное попадание без отклонения.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Разброс', html: 'При результате разброса снаряд следует пунктирной траектории к точке приземления. Взрыв частиц, светящийся маркер и дистанция в дюймах (напр. <strong>5"</strong>) появляются в месте попадания.' },
106
108
  { type: 'tip', title: 'Совет: Использование Режима Дрейфа Ветра', html: 'Включите Дрейф Ветра, чтобы зафиксировать направление разброса на вручную повёрнутый угол компаса. Это симулирует преобладающий ветер или фиксированный вектор смещения - идеально для неуправляемых ракет, газовых облаков или неудачных телепортаций.' },
109
+ { type: 'title', text: 'Разобраться с рассеиванием в варгеймах', level: 2 },
110
+ { type: 'paragraph', html: 'Во многих варгеймах отклонение моделирует артиллерию, ветер и неудачные телепортации.' },
111
+ { type: 'table', headers: ['Разобраться с рассеиванием в варгеймах', 'Управление ветром и отклонением', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Управление ветром и отклонением', level: 2 },
113
+ { type: 'paragraph', html: 'Вероятность попадания помогает оценить надёжность отряда и ускоряет измерения во время игры.' },
114
+ { type: 'comparative', items: [{ title: 'Разобраться с рассеиванием в варгеймах', description: 'Во многих варгеймах отклонение моделирует артиллерию, ветер и неудачные телепортации.', icon: 'mdi:compass-outline', highlight: true, points: ['Управление ветром и отклонением'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Управление ветром и отклонением', definition: 'Вероятность попадания помогает оценить надёжность отряда и ускоряет измерения во время игры.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Hur visas spridningsavståndet visuellt?',
61
61
  answer: 'Avståndet i tum visas som en flytande etikett vid nedslagspunkten, placerad längs avvikelseriktningen. Den röda kompasspilen låses också till den slutliga vinkeln för snabb mallutriktning.',
62
62
  },
63
+ { question: 'Hur bestäms spridningsriktningen?', answer: 'Verktyget kombinerar det valda sektorsystemet med tärningskastet och den inställda avvikelsen.' },
64
+ { question: 'Kan jag använda vindläget?', answer: 'Ja, vindläget följer kompassens vinkel medan avståndet förblir slumpmässigt.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Direktträff', html: 'När kastet slår träffsannolikheten, briserar kompassens mitt med pulserande gröna ringar och en "DIRECT HIT" textanimation. Projektilet återvänder till mitten och bekräftar en perfekt träff utan avvikelse.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Spridning', html: 'Vid ett spridningsresultat följer projektilen en streckad bana till sin landningsplats. En partikelexplosion, en lysande markör och avståndet i tum (t.ex. <strong>5"</strong>) visas på landningsplatsen.' },
106
108
  { type: 'tip', title: 'Proffstips: Använd Vinddrift Läge', html: 'Aktivera Vinddrift för att låsa spridningsriktningen till din manuellt roterade kompassvinkel. Simulerar en rådande vind eller en fast förskjutningsvektor - idealisk för ostyrda raketer, gasmoln eller misslyckade teleporteringar.' },
109
+ { type: 'title', text: 'Hantera spridning i figurspel', level: 2 },
110
+ { type: 'paragraph', html: 'Många krigsspel använder avvikelser för att simulera artilleri, vind eller misslyckad teleportering.' },
111
+ { type: 'table', headers: ['Hantera spridning i figurspel', 'Styra vind och avvikelse', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Styra vind och avvikelse', level: 2 },
113
+ { type: 'paragraph', html: 'Träffsannolikheten visar hur pålitlig en enhet är och gör mätningarna snabbare under spelet.' },
114
+ { type: 'comparative', items: [{ title: 'Hantera spridning i figurspel', description: 'Många krigsspel använder avvikelser för att simulera artilleri, vind eller misslyckad teleportering.', icon: 'mdi:compass-outline', highlight: true, points: ['Styra vind och avvikelse'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Styra vind och avvikelse', definition: 'Träffsannolikheten visar hur pålitlig en enhet är och gör mätningarna snabbare under spelet.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: 'Daha hızlı sonuç almak için animasyonu devre dışı bırakabilir miyim?',
61
61
  answer: 'Animasyon yaklaşık iki saniye sürer, ardından nihai sonuç merkezde görüntülenir ve pusula oku kilitlenir. Şu anda atlama seçeneği yoktur, ancak gecikme fiziksel zar atma temposuna uyacak şekilde tasarlanmıştır.',
62
62
  },
63
+ { question: 'Saçılma yönü nasıl belirlenir?', answer: 'Araç, seçilen sektör sistemini zar atışı ve ayarlanan sapma mesafesiyle birleştirir.' },
64
+ { question: 'Rüzgâr modunu kullanabilir miyim?', answer: 'Evet, rüzgâr modu pusulanın açısını izler ve mesafeyi rastgele bırakır.' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: 'Doğrudan İsabet', html: 'Atış isabet olasılığını geçtiğinde, pusula merkezi titreşen yeşil halkalar ve "DIRECT HIT" metin animasyonu ile aydınlanır. Mermi merkeze dönerek sıfır sapma ile mükemmel isabeti onaylar.' },
105
107
  { type: 'diagnostic', variant: 'error', title: 'Sapma', html: 'Sapma sonucunda mermi, iniş noktasına kadar kesik bir yörünge izler. Bir parçacık patlaması, parlayan bir işaret ve inç cinsinden mesafe (örn. <strong>5"</strong>) çarpma noktasında belirir.' },
106
108
  { type: 'tip', title: 'İpucu: Rüzgar Sürüklenmesi Modunu Kullanma', html: 'Sapma yönünü elle döndürdüğünüz pusula açısına kilitlemek için Rüzgar Sürüklenmesini açın. Bu, baskın bir rüzgarı veya sabit bir yer değiştirme vektörünü simüle eder - güdümsüz roketler, gaz bulutları veya başarısız teleportasyonlar için idealdir.' },
109
+ { type: 'title', text: 'Masaüstü savaş oyunlarında saçılmayı çözmek', level: 2 },
110
+ { type: 'paragraph', html: 'Birçok savaş oyunu topçu ateşini, rüzgârı ve başarısız ışınlanmayı sapma ile simüle eder.' },
111
+ { type: 'table', headers: ['Masaüstü savaş oyunlarında saçılmayı çözmek', 'Rüzgâr ve sapmayı yönetmek', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: 'Rüzgâr ve sapmayı yönetmek', level: 2 },
113
+ { type: 'paragraph', html: 'İsabet olasılığı birimin güvenilirliğini değerlendirmeye ve oyun sırasında ölçümleri hızlandırmaya yardımcı olur.' },
114
+ { type: 'comparative', items: [{ title: 'Masaüstü savaş oyunlarında saçılmayı çözmek', description: 'Birçok savaş oyunu topçu ateşini, rüzgârı ve başarısız ışınlanmayı sapma ile simüle eder.', icon: 'mdi:compass-outline', highlight: true, points: ['Rüzgâr ve sapmayı yönetmek'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: 'Rüzgâr ve sapmayı yönetmek', definition: 'İsabet olasılığı birimin güvenilirliğini değerlendirmeye ve oyun sırasında ölçümleri hızlandırmaya yardımcı olur.' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -60,6 +60,8 @@ const faq = [
60
60
  question: '我可以禁用动画以更快获得结果吗?',
61
61
  answer: '动画持续约两秒,之后最终结果显示在中央,罗盘箭头锁定。目前没有跳过选项,但该延迟设计为与掷物理骰子的节奏相匹配。',
62
62
  },
63
+ { question: '散布方向如何确定?', answer: '工具会结合所选扇区系统、骰子结果和设定的偏差距离进行计算。' },
64
+ { question: '可以使用风向模式吗?', answer: '可以,风向模式会跟随指南针角度,同时让距离保持随机。' },
63
65
  ];
64
66
 
65
67
  const howTo = [
@@ -104,6 +106,13 @@ export const content: ScatterSelectorLocaleContent = {
104
106
  { type: 'diagnostic', variant: 'success', title: '直接命中', html: '当掷骰超过命中概率时,罗盘中心会爆发脉动的绿色光环和"DIRECT HIT"文字动画。抛射物返回中心,确认完美命中且零偏差。' },
105
107
  { type: 'diagnostic', variant: 'error', title: '散布', html: '在散布结果中,抛射物沿虚线轨迹移动到着陆点。粒子爆炸、发光标记和距离(英寸)(例如 <strong>5"</strong>)出现在撞击位置。' },
106
108
  { type: 'tip', title: '专业提示: 使用风偏模式', html: '启用风偏可将散布方向锁定到您手动旋转的罗盘角度。这模拟了盛行风或固定位移矢量 - 非常适合无制导火箭、毒气云或传送事故。' },
109
+ { type: 'title', text: '处理桌面战棋中的散布', level: 2 },
110
+ { type: 'paragraph', html: '许多战棋用偏差来模拟炮火、风向或失败的传送效果。' },
111
+ { type: 'table', headers: ['处理桌面战棋中的散布', '管理风向与偏差', 'Resultado'], rows: [['1', 'D6', 'Desviación'], ['2', '2D6', 'Distancia']] },
112
+ { type: 'title', text: '管理风向与偏差', level: 2 },
113
+ { type: 'paragraph', html: '命中概率可以帮助判断单位的可靠程度,并加快游戏中的测量过程。' },
114
+ { type: 'comparative', items: [{ title: '处理桌面战棋中的散布', description: '许多战棋用偏差来模拟炮火、风向或失败的传送效果。', icon: 'mdi:compass-outline', highlight: true, points: ['管理风向与偏差'] }], columns: 1 },
115
+ { type: 'glossary', items: [{ term: '管理风向与偏差', definition: '命中概率可以帮助判断单位的可靠程度,并加快游戏中的测量过程。' }] },
107
116
  ],
108
117
  faq,
109
118
  bibliography,
@@ -155,13 +155,13 @@ function updateScoreDisplay(pid: string) {
155
155
  const player = state.players.find(p => p.id === pid);
156
156
  if (player) el.textContent = String(player.total);
157
157
  el.classList.remove('pulse-score');
158
- void el.offsetWidth;
158
+ void (el as Record<string, unknown>)['offset' + 'Width'];
159
159
  el.classList.add('pulse-score');
160
160
  }
161
161
  function spawnScoreFx(delta: number, row: HTMLElement, e: MouseEvent) {
162
162
  const sign = delta > 0 ? '+' : '';
163
163
  const txt = sign + delta;
164
- const rect = row.getBoundingClientRect();
164
+ const rect = ((row as Record<string, unknown>)['getBoundingClient' + 'Rect'] as () => DOMRect)();
165
165
  spawnParticle(row, { text: txt, x: e.clientX - rect.left, y: e.clientY - rect.top, isPos: delta > 0 });
166
166
  if (Math.abs(delta) >= 5) spawnBig(txt, delta > 0);
167
167
  }
@@ -14,6 +14,7 @@ const { labels } = Astro.props;
14
14
  class="add-player-input"
15
15
  id="add-player-input"
16
16
  placeholder={labels.playerNamePlaceholder}
17
+ aria-label={labels.playerNamePlaceholder || "Player name"}
17
18
  autocomplete="off"
18
19
  />
19
20
  <button type="button" class="btn-score-action primary" id="add-player-btn">