@jjlmoya/utils-creative 1.26.0 → 1.27.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.
- package/package.json +2 -2
- package/src/category/i18n/de.ts +2 -2
- package/src/category/i18n/en.ts +2 -2
- package/src/category/i18n/es.ts +2 -2
- package/src/category/i18n/fr.ts +2 -2
- package/src/category/i18n/id.ts +2 -2
- package/src/category/i18n/it.ts +2 -2
- package/src/category/i18n/ja.ts +2 -2
- package/src/category/i18n/ko.ts +2 -2
- package/src/category/i18n/nl.ts +2 -2
- package/src/category/i18n/pl.ts +2 -2
- package/src/category/i18n/pt.ts +2 -2
- package/src/category/i18n/ru.ts +2 -2
- package/src/category/i18n/sv.ts +2 -2
- package/src/category/i18n/tr.ts +2 -2
- package/src/category/i18n/zh.ts +2 -2
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/env.d.ts +1 -1
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +17 -17
- package/src/tool/bead-pattern-generator/bibliography.astro +8 -8
- package/src/tool/bead-pattern-generator/i18n/de.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/en.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/es.ts +104 -104
- package/src/tool/bead-pattern-generator/i18n/fr.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/id.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/it.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ja.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ko.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/nl.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/pl.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/pt.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ru.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/sv.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/tr.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/zh.ts +111 -111
- package/src/tool/bead-pattern-generator/seo.astro +19 -19
- package/src/tool/dice-roller/bibliography.astro +8 -8
- package/src/tool/dice-roller/i18n/de.ts +134 -134
- package/src/tool/dice-roller/i18n/en.ts +134 -134
- package/src/tool/dice-roller/i18n/es.ts +125 -125
- package/src/tool/dice-roller/i18n/fr.ts +134 -134
- package/src/tool/dice-roller/i18n/id.ts +134 -134
- package/src/tool/dice-roller/i18n/it.ts +134 -134
- package/src/tool/dice-roller/i18n/ja.ts +134 -134
- package/src/tool/dice-roller/i18n/ko.ts +134 -134
- package/src/tool/dice-roller/i18n/nl.ts +134 -134
- package/src/tool/dice-roller/i18n/pl.ts +134 -134
- package/src/tool/dice-roller/i18n/pt.ts +134 -134
- package/src/tool/dice-roller/i18n/ru.ts +134 -134
- package/src/tool/dice-roller/i18n/sv.ts +134 -134
- package/src/tool/dice-roller/i18n/tr.ts +134 -134
- package/src/tool/dice-roller/i18n/zh.ts +134 -134
- package/src/tool/dice-roller/seo.astro +15 -15
- package/src/tool/excuse-generator/bibliography.astro +8 -8
- package/src/tool/excuse-generator/i18n/de.ts +120 -120
- package/src/tool/excuse-generator/i18n/en.ts +120 -120
- package/src/tool/excuse-generator/i18n/es.ts +118 -118
- package/src/tool/excuse-generator/i18n/fr.ts +120 -120
- package/src/tool/excuse-generator/i18n/id.ts +120 -120
- package/src/tool/excuse-generator/i18n/it.ts +120 -120
- package/src/tool/excuse-generator/i18n/ja.ts +120 -120
- package/src/tool/excuse-generator/i18n/ko.ts +120 -120
- package/src/tool/excuse-generator/i18n/nl.ts +120 -120
- package/src/tool/excuse-generator/i18n/pl.ts +120 -120
- package/src/tool/excuse-generator/i18n/pt.ts +120 -120
- package/src/tool/excuse-generator/i18n/ru.ts +120 -120
- package/src/tool/excuse-generator/i18n/sv.ts +120 -120
- package/src/tool/excuse-generator/i18n/tr.ts +120 -120
- package/src/tool/excuse-generator/i18n/zh.ts +120 -120
- package/src/tool/excuse-generator/seo.astro +15 -15
- package/src/tool/fortune-cookie/bibliography.astro +8 -8
- package/src/tool/fortune-cookie/i18n/de.ts +124 -124
- package/src/tool/fortune-cookie/i18n/en.ts +124 -124
- package/src/tool/fortune-cookie/i18n/es.ts +125 -125
- package/src/tool/fortune-cookie/i18n/fr.ts +124 -124
- package/src/tool/fortune-cookie/i18n/id.ts +124 -124
- package/src/tool/fortune-cookie/i18n/it.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ja.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ko.ts +124 -124
- package/src/tool/fortune-cookie/i18n/nl.ts +124 -124
- package/src/tool/fortune-cookie/i18n/pl.ts +124 -124
- package/src/tool/fortune-cookie/i18n/pt.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ru.ts +124 -124
- package/src/tool/fortune-cookie/i18n/sv.ts +124 -124
- package/src/tool/fortune-cookie/i18n/tr.ts +124 -124
- package/src/tool/fortune-cookie/i18n/zh.ts +124 -124
- package/src/tool/fortune-cookie/seo.astro +15 -15
- package/src/tool/synesthesia-painter/bibliography.astro +8 -8
- package/src/tool/synesthesia-painter/i18n/de.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/en.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/es.ts +110 -110
- package/src/tool/synesthesia-painter/i18n/fr.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/id.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/it.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ja.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ko.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/nl.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/pl.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/pt.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ru.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/sv.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/tr.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/zh.ts +118 -118
- package/src/tool/synesthesia-painter/seo.astro +15 -15
- package/src/tool/zalgo-generator/bibliography.astro +8 -8
- package/src/tool/zalgo-generator/i18n/de.ts +109 -109
- package/src/tool/zalgo-generator/i18n/en.ts +109 -109
- package/src/tool/zalgo-generator/i18n/es.ts +109 -109
- package/src/tool/zalgo-generator/i18n/fr.ts +109 -109
- package/src/tool/zalgo-generator/i18n/id.ts +109 -109
- package/src/tool/zalgo-generator/i18n/it.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ja.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ko.ts +109 -109
- package/src/tool/zalgo-generator/i18n/nl.ts +109 -109
- package/src/tool/zalgo-generator/i18n/pl.ts +109 -109
- package/src/tool/zalgo-generator/i18n/pt.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ru.ts +109 -109
- package/src/tool/zalgo-generator/i18n/sv.ts +109 -109
- package/src/tool/zalgo-generator/i18n/tr.ts +109 -109
- package/src/tool/zalgo-generator/i18n/zh.ts +109 -109
- package/src/tool/zalgo-generator/seo.astro +15 -15
- package/src/types.ts +1 -1
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'kostka-do-gry';
|
|
6
|
-
const title = 'Kostka do Gry';
|
|
7
|
-
const description = 'Kompletny symulator kości do Twoich gier RPG i planszówek. Rzucaj k4, k6, k8, k10, k12, k20 oraz k100 z modyfikatorami i historią.';
|
|
8
|
-
|
|
9
|
-
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Jak symulować rzut z ułatwieniem (advantage - D&D)?',
|
|
12
|
-
answer: 'Dodaj dwie kości k20 do worka, klikając dwukrotnie przycisk k20. Podczas rzutu obserwuj dwa indywidualne wyniki i zachowaj ten wyższy. Wyświetlona suma będzie ich dodatkiem, ale możesz zobaczyć każdą kość z osobna w zestawieniu wyników.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Co oznacza zielony lub czerwony kolor wyników?',
|
|
16
|
-
answer: 'Zielone wyniki wskazują, że na kości wypał jej maksymalny możliwy wynik ("krytyk"). Czerwone wyniki oznaczają wartość minimalną ("1", najgorszy możliwy wynik). Dzięki temu można błyskawicznie dostrzec krytyczne sukcesy i pechowe rzuty.',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'Czy mogę dodać kilka kości tego samego typu?',
|
|
20
|
-
answer: 'Tak. Każde kliknięcie na kość dodaje ją do worka. Jeśli klikniesz k6 trzy razy, worek pokaże "3k6". Aby zmniejszyć liczbę kości, kliknij przycisk "−", który pojawia się obok każdej grupy kości w worku.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Czy kości cyfrowe są tak samo losowe jak fizyczne?',
|
|
24
|
-
answer: 'Statystycznie tak. Nowoczesne silniki JavaScript używają algorytmów pseudolosowych (xorshift128+) o bardzo wysokiej jakości rozkładu jednostajnego. Prawdziwa fizyczna kość może mieć drobne niedoskonałości produkcyjne, które wpływają na wyniki; cyfrowa kość jest wolna od tego problemu.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
question: 'Czym jest k100 i jak się go używa?',
|
|
28
|
-
answer: 'k100 (lub k%) generuje liczbę od 1 do 100 i jest używany w systemach gier opartych na procentach, takich jak Zew Cthulhu czy Warhammer Fantasy Roleplay. Reprezentuje "bezpośrednie prawdopodobieństwo": jeśli Twoja umiejętność Skradania wynosi 65%, musisz wyrzucić 65 lub mniej, aby odnieść sukces.',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
-
{ name: 'Stwórz pulę kości', text: 'Klikaj przyciski kości (k4, k6, k8...), aby dodać je do swojej puli. Każde kliknięcie dodaje jedną kość wybranego typu. Możesz mieszać różne typy w jednym rzucie.' },
|
|
34
|
-
{ name: 'Dostosuj modyfikator', text: 'Użyj przycisków "+" i "−" obok modyfikatora, aby zastosować premie lub kary (jak modyfikator atrybutu w D&D). Modyfikator jest automatycznie dodawany do sumy.' },
|
|
35
|
-
{ name: 'Rzuć kośćmi', text: 'Naciśnij przycisk "Rzuć Kośćmi". Prawy panel pokazuje ostateczną sumę oraz rozbicie na każdą pojedynczą kość, z krytykami (maksimum) na zielono i pechami (minimum) na czerwono.' },
|
|
36
|
-
{ name: 'Sprawdź historię', text: 'Każdy rzut jest zapisywany w historii wraz z użytym wyrażeniem kości, całkowitym wynikiem i dokładnym czasem. Możesz wyczyścić historię za pomocą odpowiedniego przycisku.' },
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
-
'@context': 'https://schema.org',
|
|
41
|
-
'@type': 'FAQPage',
|
|
42
|
-
mainEntity: faq.map((item) => ({
|
|
43
|
-
'@type': 'Question',
|
|
44
|
-
name: item.question,
|
|
45
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
-
})),
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
const howToSchema: WithContext<HowTo> = {
|
|
50
|
-
'@context': 'https://schema.org',
|
|
51
|
-
'@type': 'HowTo',
|
|
52
|
-
name: title,
|
|
53
|
-
description,
|
|
54
|
-
step: howTo.map((step) => ({
|
|
55
|
-
'@type': 'HowToStep',
|
|
56
|
-
name: step.name,
|
|
57
|
-
text: step.text,
|
|
58
|
-
})),
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
-
'@context': 'https://schema.org',
|
|
63
|
-
'@type': 'SoftwareApplication',
|
|
64
|
-
name: title,
|
|
65
|
-
description,
|
|
66
|
-
applicationCategory: 'UtilitiesApplication',
|
|
67
|
-
operatingSystem: 'Web',
|
|
68
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
-
inLanguage: 'pl',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const content: DiceRollerLocaleContent = {
|
|
73
|
-
slug,
|
|
74
|
-
title,
|
|
75
|
-
description,
|
|
76
|
-
faqTitle: 'Najczęściej Zadawane Pytania',
|
|
77
|
-
ui: {
|
|
78
|
-
title: 'Kostka do Gry',
|
|
79
|
-
description: 'Niech szczęście ci sprzyja.',
|
|
80
|
-
rollBtn: 'Rzuć Kośćmi',
|
|
81
|
-
totalLabel: 'Suma',
|
|
82
|
-
historyLabel: 'Historia',
|
|
83
|
-
clearHistoryBtn: 'Wyczyść Historię',
|
|
84
|
-
faqTitle: 'FAQ',
|
|
85
|
-
bibliographyTitle: 'Źródła',
|
|
86
|
-
addDiceLabel: 'Dodaj kości do worka',
|
|
87
|
-
bagLabel: 'Worek na kości',
|
|
88
|
-
emptyBagBtn: 'Opróżnij',
|
|
89
|
-
emptyBagText: 'Kliknij kości, aby je dodać',
|
|
90
|
-
modifierLabel: 'Modyfikator',
|
|
91
|
-
rollManyLabel: 'Rzuć kośćmi ($COUNT)',
|
|
92
|
-
rollOneLabel: 'Rzuć kością ($COUNT)',
|
|
93
|
-
preRollText: 'Dodaj kości i rzuć',
|
|
94
|
-
emptyHistoryText: 'Tutaj pojawi się historia rzutów'
|
|
95
|
-
},
|
|
96
|
-
seo: [
|
|
97
|
-
{ type: 'title', text: 'Sztuka Losowości: Historia i Matematyka Kości', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: 'Kości to jedne z najstarszych generatorów losowości ludzkości. <strong>Astragali</strong> - kości skokowe owiec i kóz - były używane jako prymitywne czterościenne kości już 5000 lat p.n.e. w Mezopotamii i Egipcie. Ewolucja od rzeźbionej kości do nowoczesnych dwudziestościanów z żywicy epoksydowej to nie tylko kwestia estetyki: to podróż przez teorię prawdopodobieństwa i projektowanie mechanik gier.' },
|
|
99
|
-
{ type: 'title', text: 'Standardowa Rodzina Kości', level: 3 },
|
|
100
|
-
{ type: 'paragraph', html: 'Najbardziej rozpowszechniony zestaw kości w grach fabularnych - spopularyzowany przez grupę <strong>Dungeons & Dragons</strong> w 1974 roku - składa się z pięciu brył platońskich oraz dwóch dodatkowych kształtów: k4 (czworościan), k6 (sześcian), k8 (ośmiościan), k10 (dwudziestościan deltoidalny), k12 (dwunastościan), k20 (dwudziestościan) oraz k100 (kość procentowa). Każdy wielościan gwarantuje rozkład jednostajny: wszystkie ścianki mają dokładnie takie samo prawdopodobieństwo wypadnięcia.' },
|
|
101
|
-
{ type: 'list', items: [
|
|
102
|
-
'<strong>k4 - Czworościan:</strong> Najbardziej niebezpieczna, gdy nadepnie się na nią boso. Cztery trójkątne ścianki, 25% prawdopodobieństwa na ściankę. Powszechnie używana do obrażeń od sztyletów lub zaklęć niskiego poziomu.',
|
|
103
|
-
'<strong>k6 - Sześcian:</strong> Najbardziej uniwersalna kość. Obecna we wszystkich grach planszowych od czasu egipskiego senet. Jej sześcienna geometria gwarantuje doskonałą równomierność rozkładu.',
|
|
104
|
-
'<strong>k8 - Ośmiościan:</strong> Kość włóczni lub topora bojowego. Osiem ścianek będących trójkątami równobocznymi. 12,5% prawdopodobieństwa na ściankę.',
|
|
105
|
-
'<strong>k10 - Dwudziestościan deltoidalny:</strong> Jedyna bryła w standardowym zestawie, która nie jest bryłą platońską. Dwie przeciwległe ścianki na "wierzchołek". Niezbędna do k100 (dwie połączone k10).',
|
|
106
|
-
'<strong>k12 - Dwunastościan:</strong> Kość barbarzyńcy. Dwanaście pięciokątnych ścianek. Niedoceniana w wielu systemach, główna bohaterka barbarzyńcy w D&D 5e.',
|
|
107
|
-
'<strong>k20 - Dwudziestościan:</strong> Królowa gier RPG. Dwadzieścia trójkątnych ścianek. Protagonistka systemu d20: decyduje o sukcesie lub porażce niemal wszystkich działań.',
|
|
108
|
-
'<strong>k100 - Kość procentowa:</strong> Dwie połączone k10 (dziesiątki + jedności). Definiuje precyzyjne prawdopodobieństwo w systemach takich jak Zew Cthulhu czy Warhammer Fantasy.',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'stats', items: [
|
|
111
|
-
{ value: '5000 p.n.e.', label: 'Pierwsze kości (astragali)', icon: 'mdi:history' },
|
|
112
|
-
{ value: '1974', label: 'D&D spopularyzowało zestaw', icon: 'mdi:sword' },
|
|
113
|
-
{ value: '7 typów', label: 'Standardowe kości RPG', icon: 'mdi:dice-multiple' },
|
|
114
|
-
{ value: '2¹²⁸', label: 'Okres losowości JS', icon: 'mdi:function-variant' },
|
|
115
|
-
], columns: 4 },
|
|
116
|
-
{ type: 'title', text: 'Prawdopodobieństwo i Krzywe Rozkładu', level: 3 },
|
|
117
|
-
{ type: 'paragraph', html: 'Rzucając pojedynczą kością, otrzymujesz <strong>dyskretny rozkład jednostajny</strong>: każdy wynik ma dokładnie takie samo prawdopodobieństwo (1/n). Jednak gdy tylko połączysz wiele kości, matematyczna magia przekształca tę płaską krzywą w <strong>przybliżony rozkład normalny</strong>. Dlatego 2k6 to nie to samo co 1k12: przy dwóch kostkach sześciościennych prawdopodobieństwo wyrzucenia 7 wynosi 6/36 ≈ 16,7%, podczas gdy skrajne wyniki (2 i 12) zdarzają się tylko w 2,8% przypadków.' },
|
|
118
|
-
{ type: 'tip', title: 'Ułatwienie i Utrudnienie (D&D 5e)', html: 'Mechanika <strong>Ułatwienia</strong> polega na rzucie 2k20 i zachowaniu wyższego wyniku. Matematycznie podnosi to średnią z 10,5 do około 13,8. <strong>Utrudnienie</strong> robi coś przeciwnego: wybiera niższy wynik, obniżając średnią do około 7,2. Nasz symulator pozwala to zasymulować, dodając dwie k20 do worka i porównując indywidualne wyniki.' },
|
|
119
|
-
{ type: 'title', text: 'Modyfikatory: Most Między Kością a Postacią', level: 3 },
|
|
120
|
-
{ type: 'paragraph', html: 'W większości systemów RPG kość nie działa sama: dodaje się lub odejmuje <strong>modyfikator</strong> reprezentujący umiejętności postaci. W D&D 5e modyfikator Siły +5 oznacza, że rzucasz 1k20, dodajesz 5 i sprawdzasz wynik względem Klasy Pancerza przeciwnika. Nasz symulator zawiera kontrolkę modyfikatora, aby wiernie odzwierciedlać te mechaniki.' },
|
|
121
|
-
{ type: 'tip', title: 'Standard Notacji Kości', html: 'Notacja <strong>XkY+Z</strong> jest de facto standardem w grach fabularnych: X kości o Y ściankach z modyfikatorem Z. "3k6+2" oznacza rzut trzema kośćmi sześciościennymi i dodanie 2 do sumy. Nasze narzędzie używa tej notacji w historii, dzięki czemu możesz łatwo dzielić się swoimi rzutami lub je zapisywać.' },
|
|
122
|
-
{ type: 'glossary', items: [
|
|
123
|
-
{ term: 'Trafienie krytyczne', definition: 'Wyrzucenie maksymalnej wartości na kości (np. 20 na k20). Zazwyczaj wyzwala specjalne efekty dodatkowe w większości systemów RPG.' },
|
|
124
|
-
{ term: 'Pech / Naturalne 1', definition: 'Wyrzucenie minimalnej wartości (1) na kości. Często skutkuje dramatyczną porażką lub negatywnymi konsekwencjami.' },
|
|
125
|
-
{ term: 'Pula kości', definition: 'Zbiór kości rzucanych jednocześnie. Pula w naszym narzędziu pokazuje każdy typ kości pogrupowany według liczby (np. 3k6 + 2k8).' },
|
|
126
|
-
{ term: 'Modyfikator', definition: 'Stała liczba dodawana lub odejmowana od wyniku rzutu, reprezentująca umiejętność postaci, premię do atrybutu lub karę sytuacyjną.' },
|
|
127
|
-
{ term: 'Rzut procentowy', definition: 'Rzut z użyciem dwóch k10 w celu uzyskania wyniku od 1 do 100, stosowany w systemach opartych na umiejętnościach, gdzie zdolności mierzone są w procentach.' },
|
|
128
|
-
]},
|
|
129
|
-
],
|
|
130
|
-
faq,
|
|
131
|
-
bibliography,
|
|
132
|
-
howTo,
|
|
133
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'kostka-do-gry';
|
|
6
|
+
const title = 'Kostka do Gry';
|
|
7
|
+
const description = 'Kompletny symulator kości do Twoich gier RPG i planszówek. Rzucaj k4, k6, k8, k10, k12, k20 oraz k100 z modyfikatorami i historią.';
|
|
8
|
+
|
|
9
|
+
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Jak symulować rzut z ułatwieniem (advantage - D&D)?',
|
|
12
|
+
answer: 'Dodaj dwie kości k20 do worka, klikając dwukrotnie przycisk k20. Podczas rzutu obserwuj dwa indywidualne wyniki i zachowaj ten wyższy. Wyświetlona suma będzie ich dodatkiem, ale możesz zobaczyć każdą kość z osobna w zestawieniu wyników.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Co oznacza zielony lub czerwony kolor wyników?',
|
|
16
|
+
answer: 'Zielone wyniki wskazują, że na kości wypał jej maksymalny możliwy wynik ("krytyk"). Czerwone wyniki oznaczają wartość minimalną ("1", najgorszy możliwy wynik). Dzięki temu można błyskawicznie dostrzec krytyczne sukcesy i pechowe rzuty.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Czy mogę dodać kilka kości tego samego typu?',
|
|
20
|
+
answer: 'Tak. Każde kliknięcie na kość dodaje ją do worka. Jeśli klikniesz k6 trzy razy, worek pokaże "3k6". Aby zmniejszyć liczbę kości, kliknij przycisk "−", który pojawia się obok każdej grupy kości w worku.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Czy kości cyfrowe są tak samo losowe jak fizyczne?',
|
|
24
|
+
answer: 'Statystycznie tak. Nowoczesne silniki JavaScript używają algorytmów pseudolosowych (xorshift128+) o bardzo wysokiej jakości rozkładu jednostajnego. Prawdziwa fizyczna kość może mieć drobne niedoskonałości produkcyjne, które wpływają na wyniki; cyfrowa kość jest wolna od tego problemu.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Czym jest k100 i jak się go używa?',
|
|
28
|
+
answer: 'k100 (lub k%) generuje liczbę od 1 do 100 i jest używany w systemach gier opartych na procentach, takich jak Zew Cthulhu czy Warhammer Fantasy Roleplay. Reprezentuje "bezpośrednie prawdopodobieństwo": jeśli Twoja umiejętność Skradania wynosi 65%, musisz wyrzucić 65 lub mniej, aby odnieść sukces.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
+
{ name: 'Stwórz pulę kości', text: 'Klikaj przyciski kości (k4, k6, k8...), aby dodać je do swojej puli. Każde kliknięcie dodaje jedną kość wybranego typu. Możesz mieszać różne typy w jednym rzucie.' },
|
|
34
|
+
{ name: 'Dostosuj modyfikator', text: 'Użyj przycisków "+" i "−" obok modyfikatora, aby zastosować premie lub kary (jak modyfikator atrybutu w D&D). Modyfikator jest automatycznie dodawany do sumy.' },
|
|
35
|
+
{ name: 'Rzuć kośćmi', text: 'Naciśnij przycisk "Rzuć Kośćmi". Prawy panel pokazuje ostateczną sumę oraz rozbicie na każdą pojedynczą kość, z krytykami (maksimum) na zielono i pechami (minimum) na czerwono.' },
|
|
36
|
+
{ name: 'Sprawdź historię', text: 'Każdy rzut jest zapisywany w historii wraz z użytym wyrażeniem kości, całkowitym wynikiem i dokładnym czasem. Możesz wyczyścić historię za pomocą odpowiedniego przycisku.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faq.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowTo> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howTo.map((step) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
name: step.name,
|
|
57
|
+
text: step.text,
|
|
58
|
+
})),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'SoftwareApplication',
|
|
64
|
+
name: title,
|
|
65
|
+
description,
|
|
66
|
+
applicationCategory: 'UtilitiesApplication',
|
|
67
|
+
operatingSystem: 'Web',
|
|
68
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
+
inLanguage: 'pl',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const content: DiceRollerLocaleContent = {
|
|
73
|
+
slug,
|
|
74
|
+
title,
|
|
75
|
+
description,
|
|
76
|
+
faqTitle: 'Najczęściej Zadawane Pytania',
|
|
77
|
+
ui: {
|
|
78
|
+
title: 'Kostka do Gry',
|
|
79
|
+
description: 'Niech szczęście ci sprzyja.',
|
|
80
|
+
rollBtn: 'Rzuć Kośćmi',
|
|
81
|
+
totalLabel: 'Suma',
|
|
82
|
+
historyLabel: 'Historia',
|
|
83
|
+
clearHistoryBtn: 'Wyczyść Historię',
|
|
84
|
+
faqTitle: 'FAQ',
|
|
85
|
+
bibliographyTitle: 'Źródła',
|
|
86
|
+
addDiceLabel: 'Dodaj kości do worka',
|
|
87
|
+
bagLabel: 'Worek na kości',
|
|
88
|
+
emptyBagBtn: 'Opróżnij',
|
|
89
|
+
emptyBagText: 'Kliknij kości, aby je dodać',
|
|
90
|
+
modifierLabel: 'Modyfikator',
|
|
91
|
+
rollManyLabel: 'Rzuć kośćmi ($COUNT)',
|
|
92
|
+
rollOneLabel: 'Rzuć kością ($COUNT)',
|
|
93
|
+
preRollText: 'Dodaj kości i rzuć',
|
|
94
|
+
emptyHistoryText: 'Tutaj pojawi się historia rzutów'
|
|
95
|
+
},
|
|
96
|
+
seo: [
|
|
97
|
+
{ type: 'title', text: 'Sztuka Losowości: Historia i Matematyka Kości', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Kości to jedne z najstarszych generatorów losowości ludzkości. <strong>Astragali</strong> - kości skokowe owiec i kóz - były używane jako prymitywne czterościenne kości już 5000 lat p.n.e. w Mezopotamii i Egipcie. Ewolucja od rzeźbionej kości do nowoczesnych dwudziestościanów z żywicy epoksydowej to nie tylko kwestia estetyki: to podróż przez teorię prawdopodobieństwa i projektowanie mechanik gier.' },
|
|
99
|
+
{ type: 'title', text: 'Standardowa Rodzina Kości', level: 3 },
|
|
100
|
+
{ type: 'paragraph', html: 'Najbardziej rozpowszechniony zestaw kości w grach fabularnych - spopularyzowany przez grupę <strong>Dungeons & Dragons</strong> w 1974 roku - składa się z pięciu brył platońskich oraz dwóch dodatkowych kształtów: k4 (czworościan), k6 (sześcian), k8 (ośmiościan), k10 (dwudziestościan deltoidalny), k12 (dwunastościan), k20 (dwudziestościan) oraz k100 (kość procentowa). Każdy wielościan gwarantuje rozkład jednostajny: wszystkie ścianki mają dokładnie takie samo prawdopodobieństwo wypadnięcia.' },
|
|
101
|
+
{ type: 'list', items: [
|
|
102
|
+
'<strong>k4 - Czworościan:</strong> Najbardziej niebezpieczna, gdy nadepnie się na nią boso. Cztery trójkątne ścianki, 25% prawdopodobieństwa na ściankę. Powszechnie używana do obrażeń od sztyletów lub zaklęć niskiego poziomu.',
|
|
103
|
+
'<strong>k6 - Sześcian:</strong> Najbardziej uniwersalna kość. Obecna we wszystkich grach planszowych od czasu egipskiego senet. Jej sześcienna geometria gwarantuje doskonałą równomierność rozkładu.',
|
|
104
|
+
'<strong>k8 - Ośmiościan:</strong> Kość włóczni lub topora bojowego. Osiem ścianek będących trójkątami równobocznymi. 12,5% prawdopodobieństwa na ściankę.',
|
|
105
|
+
'<strong>k10 - Dwudziestościan deltoidalny:</strong> Jedyna bryła w standardowym zestawie, która nie jest bryłą platońską. Dwie przeciwległe ścianki na "wierzchołek". Niezbędna do k100 (dwie połączone k10).',
|
|
106
|
+
'<strong>k12 - Dwunastościan:</strong> Kość barbarzyńcy. Dwanaście pięciokątnych ścianek. Niedoceniana w wielu systemach, główna bohaterka barbarzyńcy w D&D 5e.',
|
|
107
|
+
'<strong>k20 - Dwudziestościan:</strong> Królowa gier RPG. Dwadzieścia trójkątnych ścianek. Protagonistka systemu d20: decyduje o sukcesie lub porażce niemal wszystkich działań.',
|
|
108
|
+
'<strong>k100 - Kość procentowa:</strong> Dwie połączone k10 (dziesiątki + jedności). Definiuje precyzyjne prawdopodobieństwo w systemach takich jak Zew Cthulhu czy Warhammer Fantasy.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'stats', items: [
|
|
111
|
+
{ value: '5000 p.n.e.', label: 'Pierwsze kości (astragali)', icon: 'mdi:history' },
|
|
112
|
+
{ value: '1974', label: 'D&D spopularyzowało zestaw', icon: 'mdi:sword' },
|
|
113
|
+
{ value: '7 typów', label: 'Standardowe kości RPG', icon: 'mdi:dice-multiple' },
|
|
114
|
+
{ value: '2¹²⁸', label: 'Okres losowości JS', icon: 'mdi:function-variant' },
|
|
115
|
+
], columns: 4 },
|
|
116
|
+
{ type: 'title', text: 'Prawdopodobieństwo i Krzywe Rozkładu', level: 3 },
|
|
117
|
+
{ type: 'paragraph', html: 'Rzucając pojedynczą kością, otrzymujesz <strong>dyskretny rozkład jednostajny</strong>: każdy wynik ma dokładnie takie samo prawdopodobieństwo (1/n). Jednak gdy tylko połączysz wiele kości, matematyczna magia przekształca tę płaską krzywą w <strong>przybliżony rozkład normalny</strong>. Dlatego 2k6 to nie to samo co 1k12: przy dwóch kostkach sześciościennych prawdopodobieństwo wyrzucenia 7 wynosi 6/36 ≈ 16,7%, podczas gdy skrajne wyniki (2 i 12) zdarzają się tylko w 2,8% przypadków.' },
|
|
118
|
+
{ type: 'tip', title: 'Ułatwienie i Utrudnienie (D&D 5e)', html: 'Mechanika <strong>Ułatwienia</strong> polega na rzucie 2k20 i zachowaniu wyższego wyniku. Matematycznie podnosi to średnią z 10,5 do około 13,8. <strong>Utrudnienie</strong> robi coś przeciwnego: wybiera niższy wynik, obniżając średnią do około 7,2. Nasz symulator pozwala to zasymulować, dodając dwie k20 do worka i porównując indywidualne wyniki.' },
|
|
119
|
+
{ type: 'title', text: 'Modyfikatory: Most Między Kością a Postacią', level: 3 },
|
|
120
|
+
{ type: 'paragraph', html: 'W większości systemów RPG kość nie działa sama: dodaje się lub odejmuje <strong>modyfikator</strong> reprezentujący umiejętności postaci. W D&D 5e modyfikator Siły +5 oznacza, że rzucasz 1k20, dodajesz 5 i sprawdzasz wynik względem Klasy Pancerza przeciwnika. Nasz symulator zawiera kontrolkę modyfikatora, aby wiernie odzwierciedlać te mechaniki.' },
|
|
121
|
+
{ type: 'tip', title: 'Standard Notacji Kości', html: 'Notacja <strong>XkY+Z</strong> jest de facto standardem w grach fabularnych: X kości o Y ściankach z modyfikatorem Z. "3k6+2" oznacza rzut trzema kośćmi sześciościennymi i dodanie 2 do sumy. Nasze narzędzie używa tej notacji w historii, dzięki czemu możesz łatwo dzielić się swoimi rzutami lub je zapisywać.' },
|
|
122
|
+
{ type: 'glossary', items: [
|
|
123
|
+
{ term: 'Trafienie krytyczne', definition: 'Wyrzucenie maksymalnej wartości na kości (np. 20 na k20). Zazwyczaj wyzwala specjalne efekty dodatkowe w większości systemów RPG.' },
|
|
124
|
+
{ term: 'Pech / Naturalne 1', definition: 'Wyrzucenie minimalnej wartości (1) na kości. Często skutkuje dramatyczną porażką lub negatywnymi konsekwencjami.' },
|
|
125
|
+
{ term: 'Pula kości', definition: 'Zbiór kości rzucanych jednocześnie. Pula w naszym narzędziu pokazuje każdy typ kości pogrupowany według liczby (np. 3k6 + 2k8).' },
|
|
126
|
+
{ term: 'Modyfikator', definition: 'Stała liczba dodawana lub odejmowana od wyniku rzutu, reprezentująca umiejętność postaci, premię do atrybutu lub karę sytuacyjną.' },
|
|
127
|
+
{ term: 'Rzut procentowy', definition: 'Rzut z użyciem dwóch k10 w celu uzyskania wyniku od 1 do 100, stosowany w systemach opartych na umiejętnościach, gdzie zdolności mierzone są w procentach.' },
|
|
128
|
+
]},
|
|
129
|
+
],
|
|
130
|
+
faq,
|
|
131
|
+
bibliography,
|
|
132
|
+
howTo,
|
|
133
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
+
};
|
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'lancador-de-dados';
|
|
6
|
-
const title = 'Lançador de Dados';
|
|
7
|
-
const description = 'Um simulador de dados completo para os seus jogos de RPG e de tabuleiro. Lance d4, d6, d8, d10, d12, d20 e d100 com modificadores e histórico.';
|
|
8
|
-
|
|
9
|
-
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Como posso simular um lançamento com vantagem (D&D)?',
|
|
12
|
-
answer: 'Adicione dois dados d20 ao saco clicando duas vezes no botão d20. Ao lançar, observe os dois resultados individuais e fique com o mais alto. O total apresentado será a soma, mas pode ver cada dado separadamente no detalhe do resultado.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'O que significa a cor verde ou vermelha nos resultados?',
|
|
16
|
-
answer: 'Resultados verdes indicam que o dado obteve o seu valor máximo possível (um "crítico"). Resultados vermelhos indicam o valor mínimo (um "1", o pior resultado possível). Isto torna fácil detetar críticos e falhas críticas num relance.',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'Posso adicionar vários dados do mesmo tipo?',
|
|
20
|
-
answer: 'Sim. Cada clique num dado adiciona-o ao saco. Se clicar no d6 três vezes, o saco mostrará "3d6". Para reduzir a contagem, clique no botão "−" que aparece ao lado de cada grupo de dados no saco.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Os dados digitais são tão aleatórios como os físicos?',
|
|
24
|
-
answer: 'Estatisticamente, sim. Os motores de JavaScript modernos utilizam algoritmos pseudorandom (xorshift128+) com uma distribuição uniforme de altíssima qualidade. Um dado físico real pode ter pequenas imperfeições de fabrico que influenciam os resultados; o dado digital não tem esse problema.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
question: 'O que é o d100 e como é utilizado?',
|
|
28
|
-
answer: 'O d100 (ou d%) gera um número de 1 a 100 e é utilizado em sistemas de jogo baseados em percentagens, como Call of Cthulhu ou Warhammer Fantasy Roleplay. Representa a "probabilidade direta": se a sua perícia de Stealth for 65%, precisa de lançar 65 ou menos para ter sucesso.',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
-
{ name: 'Construa o conjunto de dados', text: 'Clique nos botões dos dados (d4, d6, d8...) para os adicionar ao seu conjunto. Cada clique adiciona um dado do tipo selecionado. Pode misturar diferentes tipos no mesmo lançamento.' },
|
|
34
|
-
{ name: 'Ajuste o modificador', text: 'Utilize os botões "+" e "−" ao lado do modificador para aplicar bónus ou penalizações (como o modificador de habilidade em D&D). O modificador é automaticamente adicionado ao total.' },
|
|
35
|
-
{ name: 'Lance os dados', text: 'Pressione o botão "Lançar Dados". O painel direito mostra o total final e o detalhe de cada dado individual, com críticos (máximo) em verde e falhas (mínimo) em vermelho.' },
|
|
36
|
-
{ name: 'Verifique o histórico', text: 'Cada lançamento é registado no histórico com a expressão de dados utilizada, o resultado total e a hora exata. Pode limpar o histórico com o botão correspondente.' },
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
-
'@context': 'https://schema.org',
|
|
41
|
-
'@type': 'FAQPage',
|
|
42
|
-
mainEntity: faq.map((item) => ({
|
|
43
|
-
'@type': 'Question',
|
|
44
|
-
name: item.question,
|
|
45
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
-
})),
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
const howToSchema: WithContext<HowTo> = {
|
|
50
|
-
'@context': 'https://schema.org',
|
|
51
|
-
'@type': 'HowTo',
|
|
52
|
-
name: title,
|
|
53
|
-
description,
|
|
54
|
-
step: howTo.map((step) => ({
|
|
55
|
-
'@type': 'HowToStep',
|
|
56
|
-
name: step.name,
|
|
57
|
-
text: step.text,
|
|
58
|
-
})),
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
-
'@context': 'https://schema.org',
|
|
63
|
-
'@type': 'SoftwareApplication',
|
|
64
|
-
name: title,
|
|
65
|
-
description,
|
|
66
|
-
applicationCategory: 'UtilitiesApplication',
|
|
67
|
-
operatingSystem: 'Web',
|
|
68
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
-
inLanguage: 'pt',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const content: DiceRollerLocaleContent = {
|
|
73
|
-
slug,
|
|
74
|
-
title,
|
|
75
|
-
description,
|
|
76
|
-
faqTitle: 'Perguntas Frequentes',
|
|
77
|
-
ui: {
|
|
78
|
-
title: 'Lançador de Dados',
|
|
79
|
-
description: 'Que a sorte esteja contigo.',
|
|
80
|
-
rollBtn: 'Lançar Dados',
|
|
81
|
-
totalLabel: 'Total',
|
|
82
|
-
historyLabel: 'Histórico',
|
|
83
|
-
clearHistoryBtn: 'Limpar Histórico',
|
|
84
|
-
faqTitle: 'FAQ',
|
|
85
|
-
bibliographyTitle: 'Referências',
|
|
86
|
-
addDiceLabel: 'Adicione dados ao saco',
|
|
87
|
-
bagLabel: 'Saco de dados',
|
|
88
|
-
emptyBagBtn: 'Esvaziar',
|
|
89
|
-
emptyBagText: 'Clique nos dados para adicionar',
|
|
90
|
-
modifierLabel: 'Modificador',
|
|
91
|
-
rollManyLabel: 'Lançar $COUNT dados',
|
|
92
|
-
rollOneLabel: 'Lançar $COUNT dado',
|
|
93
|
-
preRollText: 'Adicione os dados e lance',
|
|
94
|
-
emptyHistoryText: 'O histórico de lançamentos aparecerá aqui'
|
|
95
|
-
},
|
|
96
|
-
seo: [
|
|
97
|
-
{ type: 'title', text: 'A Arte da Aleatoriedade: História e Matemática dos Dados', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: 'Os dados são um dos geradores de aleatoriedade mais antigos da humanidade. Os <strong>astrágalos</strong> - ossos do tornozelo de ovelhas e cabras - eram utilizados como dados primitivos de quatro faces já em 5000 a.C. na Mesopotâmia e no Egito. A evolução do osso entalhado para os modernos icosaedros de resina epóxi não é apenas estética: é uma viagem através da teoria da probabilidade e do design de mecânicas de jogo.' },
|
|
99
|
-
{ type: 'title', text: 'A Família Padrão de Dados', level: 3 },
|
|
100
|
-
{ type: 'paragraph', html: 'O conjunto de dados mais difundido em jogos de interpretação (RPG) - popularizado por <strong>Dungeons & Dragons</strong> em 1974 - consiste nos cinco sólidos platónicos mais duas formas adicionais: d4 (tetraedro), d6 (cubo), d8 (octaedro), d10 (trapezoedro pentagonal), d12 (dodecaedro), d20 (icosaedro) e d100 (dado percentil). Cada poliedro garante uma distribuição uniforme: todas as faces têm exatamente a mesma probabilidade de sair.' },
|
|
101
|
-
{ type: 'list', items: [
|
|
102
|
-
'<strong>d4 - Tetraedro:</strong> O mais perigoso se for pisado descalço. Quatro faces triangulares, 25% de probabilidade por face. Comumente utilizado para dano de adagas ou feitiços de nível baixo.',
|
|
103
|
-
'<strong>d6 - Cubo:</strong> O dado mais universal. Presente em todos os jogos de tabuleiro desde o senet egípcio. A sua geometria cúbica garante uma equidistribuição perfeita.',
|
|
104
|
-
'<strong>d8 - Octaedro:</strong> O dado da lança ou do machado de batalha. Oito faces triangulares equiláteras. 12,5% de probabilidade por face.',
|
|
105
|
-
'<strong>d10 - Trapezoedro Pentagonal:</strong> O único sólido não platónico no conjunto padrão. Duas faces opostas por "vértice". Essencial para o d100 (dois d10 combinados).',
|
|
106
|
-
'<strong>d12 - Dodecaedro:</strong> O dado do bárbaro. Doze faces pentagonais. Subvalorizado em muitos sistemas, protagonista no Bárbaro de D&D 5e.',
|
|
107
|
-
'<strong>d20 - Icosaedro:</strong> O rei do RPG. Vinte faces triangulares. Protagonista do sistema d20: determina o sucesso ou falha de quase todas as ações.',
|
|
108
|
-
'<strong>d100 - Percentil:</strong> Dois d10 combinados (dezenas + unidades). Define probabilidades precisas em sistemas como Call of Cthulhu ou Warhammer Fantasy.',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'stats', items: [
|
|
111
|
-
{ value: '5000 a.C.', label: 'Primeiros dados (astrágalos)', icon: 'mdi:history' },
|
|
112
|
-
{ value: '1974', label: 'D&D popularizou o conjunto', icon: 'mdi:sword' },
|
|
113
|
-
{ value: '7 tipos', label: 'Dados padrão de RPG', icon: 'mdi:dice-multiple' },
|
|
114
|
-
{ value: '2¹²⁸', label: 'Período aleatório de JS', icon: 'mdi:function-variant' },
|
|
115
|
-
], columns: 4 },
|
|
116
|
-
{ type: 'title', text: 'Probabilidades e Curvas de Distribuição', level: 3 },
|
|
117
|
-
{ type: 'paragraph', html: 'Quando lança um único dado, obtém uma <strong>distribuição uniforme discreta</strong>: cada resultado tem exatamente a mesma probabilidade (1/n). Mas assim que combina vários dados, a magia matemática transforma essa curva plana numa <strong>distribuição normal aproximada</strong>. É por isso que 2d6 não é o mesmo que 1d12: com dois dados de seis faces a probabilability de lançar um 7 é 6/36 ≈ 16,7%, enquanto os extremos (2 e 12) ocorrem apenas 2,8% das vezes.' },
|
|
118
|
-
{ type: 'tip', title: 'Vantagem e Desvantagem (D&D 5e)', html: 'A mecânica de <strong>Vantagem</strong> consiste em lançar 2d20 e ficar com o resultado mais alto. Matematicamente, isto eleva a média de 10,5 para aproximadamente 13,8. A <strong>Desvantagem</strong> faz o oposto: escolha o mais baixo, baixando a média para cerca de 7,2. O nosso lançador permite simular isto adicionando dois d20 ao saco e comparando os resultados individuais.' },
|
|
119
|
-
{ type: 'title', text: 'Modificadores: A Ponte entre o Dado e a Personagem', level: 3 },
|
|
120
|
-
{ type: 'paragraph', html: 'Na maioria dos sistemas de RPG, o dado não atua sozinho: um <strong>modificador</strong> representativo das habilidades da personagem é adicionado ou subtraído. No D&D 5e, um modificador de Força de +5 significa que lança 1d20, adiciona 5 e verifica o resultado contra a Classe de Armadura do inimigo. O nosso lançador inclui um controlo de modificador para refletir fielmente estas mecânicas.' },
|
|
121
|
-
{ type: 'tip', title: 'Padrão de Notação de Dados', html: 'A notação <strong>XdY+Z</strong> é o padrão de facto em jogos de RPG: X dados de Y faces com modificador Z. "3d6+2" significa lançar três dados de seis faces e somar 2 ao total. A nossa ferramenta utiliza esta notazione no histórico para que possa facilmente partilhar ou registar os seus lançamentos.' },
|
|
122
|
-
{ type: 'glossary', items: [
|
|
123
|
-
{ term: 'Ataque Crítico', definition: 'Um lançamento do valor máximo num dado (ex., lançar 20 num d20). Geralmente ativa efeitos de bónus especiais na maioria dos sistemas de RPG.' },
|
|
124
|
-
{ term: 'Falha Crítica / 1 Natural', definition: 'Lançar o valor mínimo (1) num dado. Frequentemente resulta numa falha dramática ou consequência negativa.' },
|
|
125
|
-
{ term: 'Dice Pool', definition: 'Uma coleção de dados lançados simultaneamente. O conjunto na nossa ferramenta mostra cada tipo de dado agrupado por contagem (ex., 3d6 + 2d8).' },
|
|
126
|
-
{ term: 'Modificador', definition: 'Um número fixo somado ou subtraído do resultado de um lançamento, representando a habilidade da personagem, bónus de atributo ou penalização situacional.' },
|
|
127
|
-
{ term: 'Lançamento Percentil', definition: 'Um lançamento que utiliza dois d10 para produzir um resultado de 1-100, utilizado em sistemas baseados em perícias onde as habilidades são medidas em percentagens.' },
|
|
128
|
-
]},
|
|
129
|
-
],
|
|
130
|
-
faq,
|
|
131
|
-
bibliography,
|
|
132
|
-
howTo,
|
|
133
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'lancador-de-dados';
|
|
6
|
+
const title = 'Lançador de Dados';
|
|
7
|
+
const description = 'Um simulador de dados completo para os seus jogos de RPG e de tabuleiro. Lance d4, d6, d8, d10, d12, d20 e d100 com modificadores e histórico.';
|
|
8
|
+
|
|
9
|
+
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Como posso simular um lançamento com vantagem (D&D)?',
|
|
12
|
+
answer: 'Adicione dois dados d20 ao saco clicando duas vezes no botão d20. Ao lançar, observe os dois resultados individuais e fique com o mais alto. O total apresentado será a soma, mas pode ver cada dado separadamente no detalhe do resultado.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'O que significa a cor verde ou vermelha nos resultados?',
|
|
16
|
+
answer: 'Resultados verdes indicam que o dado obteve o seu valor máximo possível (um "crítico"). Resultados vermelhos indicam o valor mínimo (um "1", o pior resultado possível). Isto torna fácil detetar críticos e falhas críticas num relance.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Posso adicionar vários dados do mesmo tipo?',
|
|
20
|
+
answer: 'Sim. Cada clique num dado adiciona-o ao saco. Se clicar no d6 três vezes, o saco mostrará "3d6". Para reduzir a contagem, clique no botão "−" que aparece ao lado de cada grupo de dados no saco.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Os dados digitais são tão aleatórios como os físicos?',
|
|
24
|
+
answer: 'Estatisticamente, sim. Os motores de JavaScript modernos utilizam algoritmos pseudorandom (xorshift128+) com uma distribuição uniforme de altíssima qualidade. Um dado físico real pode ter pequenas imperfeições de fabrico que influenciam os resultados; o dado digital não tem esse problema.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'O que é o d100 e como é utilizado?',
|
|
28
|
+
answer: 'O d100 (ou d%) gera um número de 1 a 100 e é utilizado em sistemas de jogo baseados em percentagens, como Call of Cthulhu ou Warhammer Fantasy Roleplay. Representa a "probabilidade direta": se a sua perícia de Stealth for 65%, precisa de lançar 65 ou menos para ter sucesso.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
+
{ name: 'Construa o conjunto de dados', text: 'Clique nos botões dos dados (d4, d6, d8...) para os adicionar ao seu conjunto. Cada clique adiciona um dado do tipo selecionado. Pode misturar diferentes tipos no mesmo lançamento.' },
|
|
34
|
+
{ name: 'Ajuste o modificador', text: 'Utilize os botões "+" e "−" ao lado do modificador para aplicar bónus ou penalizações (como o modificador de habilidade em D&D). O modificador é automaticamente adicionado ao total.' },
|
|
35
|
+
{ name: 'Lance os dados', text: 'Pressione o botão "Lançar Dados". O painel direito mostra o total final e o detalhe de cada dado individual, com críticos (máximo) em verde e falhas (mínimo) em vermelho.' },
|
|
36
|
+
{ name: 'Verifique o histórico', text: 'Cada lançamento é registado no histórico com a expressão de dados utilizada, o resultado total e a hora exata. Pode limpar o histórico com o botão correspondente.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faq.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowTo> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howTo.map((step) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
name: step.name,
|
|
57
|
+
text: step.text,
|
|
58
|
+
})),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'SoftwareApplication',
|
|
64
|
+
name: title,
|
|
65
|
+
description,
|
|
66
|
+
applicationCategory: 'UtilitiesApplication',
|
|
67
|
+
operatingSystem: 'Web',
|
|
68
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
+
inLanguage: 'pt',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const content: DiceRollerLocaleContent = {
|
|
73
|
+
slug,
|
|
74
|
+
title,
|
|
75
|
+
description,
|
|
76
|
+
faqTitle: 'Perguntas Frequentes',
|
|
77
|
+
ui: {
|
|
78
|
+
title: 'Lançador de Dados',
|
|
79
|
+
description: 'Que a sorte esteja contigo.',
|
|
80
|
+
rollBtn: 'Lançar Dados',
|
|
81
|
+
totalLabel: 'Total',
|
|
82
|
+
historyLabel: 'Histórico',
|
|
83
|
+
clearHistoryBtn: 'Limpar Histórico',
|
|
84
|
+
faqTitle: 'FAQ',
|
|
85
|
+
bibliographyTitle: 'Referências',
|
|
86
|
+
addDiceLabel: 'Adicione dados ao saco',
|
|
87
|
+
bagLabel: 'Saco de dados',
|
|
88
|
+
emptyBagBtn: 'Esvaziar',
|
|
89
|
+
emptyBagText: 'Clique nos dados para adicionar',
|
|
90
|
+
modifierLabel: 'Modificador',
|
|
91
|
+
rollManyLabel: 'Lançar $COUNT dados',
|
|
92
|
+
rollOneLabel: 'Lançar $COUNT dado',
|
|
93
|
+
preRollText: 'Adicione os dados e lance',
|
|
94
|
+
emptyHistoryText: 'O histórico de lançamentos aparecerá aqui'
|
|
95
|
+
},
|
|
96
|
+
seo: [
|
|
97
|
+
{ type: 'title', text: 'A Arte da Aleatoriedade: História e Matemática dos Dados', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Os dados são um dos geradores de aleatoriedade mais antigos da humanidade. Os <strong>astrágalos</strong> - ossos do tornozelo de ovelhas e cabras - eram utilizados como dados primitivos de quatro faces já em 5000 a.C. na Mesopotâmia e no Egito. A evolução do osso entalhado para os modernos icosaedros de resina epóxi não é apenas estética: é uma viagem através da teoria da probabilidade e do design de mecânicas de jogo.' },
|
|
99
|
+
{ type: 'title', text: 'A Família Padrão de Dados', level: 3 },
|
|
100
|
+
{ type: 'paragraph', html: 'O conjunto de dados mais difundido em jogos de interpretação (RPG) - popularizado por <strong>Dungeons & Dragons</strong> em 1974 - consiste nos cinco sólidos platónicos mais duas formas adicionais: d4 (tetraedro), d6 (cubo), d8 (octaedro), d10 (trapezoedro pentagonal), d12 (dodecaedro), d20 (icosaedro) e d100 (dado percentil). Cada poliedro garante uma distribuição uniforme: todas as faces têm exatamente a mesma probabilidade de sair.' },
|
|
101
|
+
{ type: 'list', items: [
|
|
102
|
+
'<strong>d4 - Tetraedro:</strong> O mais perigoso se for pisado descalço. Quatro faces triangulares, 25% de probabilidade por face. Comumente utilizado para dano de adagas ou feitiços de nível baixo.',
|
|
103
|
+
'<strong>d6 - Cubo:</strong> O dado mais universal. Presente em todos os jogos de tabuleiro desde o senet egípcio. A sua geometria cúbica garante uma equidistribuição perfeita.',
|
|
104
|
+
'<strong>d8 - Octaedro:</strong> O dado da lança ou do machado de batalha. Oito faces triangulares equiláteras. 12,5% de probabilidade por face.',
|
|
105
|
+
'<strong>d10 - Trapezoedro Pentagonal:</strong> O único sólido não platónico no conjunto padrão. Duas faces opostas por "vértice". Essencial para o d100 (dois d10 combinados).',
|
|
106
|
+
'<strong>d12 - Dodecaedro:</strong> O dado do bárbaro. Doze faces pentagonais. Subvalorizado em muitos sistemas, protagonista no Bárbaro de D&D 5e.',
|
|
107
|
+
'<strong>d20 - Icosaedro:</strong> O rei do RPG. Vinte faces triangulares. Protagonista do sistema d20: determina o sucesso ou falha de quase todas as ações.',
|
|
108
|
+
'<strong>d100 - Percentil:</strong> Dois d10 combinados (dezenas + unidades). Define probabilidades precisas em sistemas como Call of Cthulhu ou Warhammer Fantasy.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'stats', items: [
|
|
111
|
+
{ value: '5000 a.C.', label: 'Primeiros dados (astrágalos)', icon: 'mdi:history' },
|
|
112
|
+
{ value: '1974', label: 'D&D popularizou o conjunto', icon: 'mdi:sword' },
|
|
113
|
+
{ value: '7 tipos', label: 'Dados padrão de RPG', icon: 'mdi:dice-multiple' },
|
|
114
|
+
{ value: '2¹²⁸', label: 'Período aleatório de JS', icon: 'mdi:function-variant' },
|
|
115
|
+
], columns: 4 },
|
|
116
|
+
{ type: 'title', text: 'Probabilidades e Curvas de Distribuição', level: 3 },
|
|
117
|
+
{ type: 'paragraph', html: 'Quando lança um único dado, obtém uma <strong>distribuição uniforme discreta</strong>: cada resultado tem exatamente a mesma probabilidade (1/n). Mas assim que combina vários dados, a magia matemática transforma essa curva plana numa <strong>distribuição normal aproximada</strong>. É por isso que 2d6 não é o mesmo que 1d12: com dois dados de seis faces a probabilability de lançar um 7 é 6/36 ≈ 16,7%, enquanto os extremos (2 e 12) ocorrem apenas 2,8% das vezes.' },
|
|
118
|
+
{ type: 'tip', title: 'Vantagem e Desvantagem (D&D 5e)', html: 'A mecânica de <strong>Vantagem</strong> consiste em lançar 2d20 e ficar com o resultado mais alto. Matematicamente, isto eleva a média de 10,5 para aproximadamente 13,8. A <strong>Desvantagem</strong> faz o oposto: escolha o mais baixo, baixando a média para cerca de 7,2. O nosso lançador permite simular isto adicionando dois d20 ao saco e comparando os resultados individuais.' },
|
|
119
|
+
{ type: 'title', text: 'Modificadores: A Ponte entre o Dado e a Personagem', level: 3 },
|
|
120
|
+
{ type: 'paragraph', html: 'Na maioria dos sistemas de RPG, o dado não atua sozinho: um <strong>modificador</strong> representativo das habilidades da personagem é adicionado ou subtraído. No D&D 5e, um modificador de Força de +5 significa que lança 1d20, adiciona 5 e verifica o resultado contra a Classe de Armadura do inimigo. O nosso lançador inclui um controlo de modificador para refletir fielmente estas mecânicas.' },
|
|
121
|
+
{ type: 'tip', title: 'Padrão de Notação de Dados', html: 'A notação <strong>XdY+Z</strong> é o padrão de facto em jogos de RPG: X dados de Y faces com modificador Z. "3d6+2" significa lançar três dados de seis faces e somar 2 ao total. A nossa ferramenta utiliza esta notazione no histórico para que possa facilmente partilhar ou registar os seus lançamentos.' },
|
|
122
|
+
{ type: 'glossary', items: [
|
|
123
|
+
{ term: 'Ataque Crítico', definition: 'Um lançamento do valor máximo num dado (ex., lançar 20 num d20). Geralmente ativa efeitos de bónus especiais na maioria dos sistemas de RPG.' },
|
|
124
|
+
{ term: 'Falha Crítica / 1 Natural', definition: 'Lançar o valor mínimo (1) num dado. Frequentemente resulta numa falha dramática ou consequência negativa.' },
|
|
125
|
+
{ term: 'Dice Pool', definition: 'Uma coleção de dados lançados simultaneamente. O conjunto na nossa ferramenta mostra cada tipo de dado agrupado por contagem (ex., 3d6 + 2d8).' },
|
|
126
|
+
{ term: 'Modificador', definition: 'Um número fixo somado ou subtraído do resultado de um lançamento, representando a habilidade da personagem, bónus de atributo ou penalização situacional.' },
|
|
127
|
+
{ term: 'Lançamento Percentil', definition: 'Um lançamento que utiliza dois d10 para produzir um resultado de 1-100, utilizado em sistemas baseados em perícias onde as habilidades são medidas em percentagens.' },
|
|
128
|
+
]},
|
|
129
|
+
],
|
|
130
|
+
faq,
|
|
131
|
+
bibliography,
|
|
132
|
+
howTo,
|
|
133
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
+
};
|