@jjlmoya/utils-creative 1.26.0 → 1.28.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 +75 -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 = 'simulator-kostey';
|
|
6
|
-
const title = 'Симулятор костей';
|
|
7
|
-
const description = 'Полный симулятор костей для ваших RPG и настольных игр. Бросайте d4, d6, d8, d10, d12, d20 и d100 с модификаторами и историей.';
|
|
8
|
-
|
|
9
|
-
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Как симулировать бросок с преимуществом (D&D)?',
|
|
12
|
-
answer: 'Добавьте два кубика d20 в мешочек, дважды нажав на кнопку d20. При броске обратите внимание на два отдельных результата и оставьте больший. Отображаемое общее число будет их суммой, но вы можете увидеть каждый кубик отдельно в детализации результатов.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Что означает зеленый или красный цвет в результатах?',
|
|
16
|
-
answer: 'Зеленый результат означает, что на кубике выпало максимально возможное значение (\"критический успех\"). Красный результат означает минимальное значение (\"1\", худший из возможных результатов). Это позволяет мгновенно замечать \"криты\" и \"провалы\".',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'Можно ли добавить несколько костей одного типа?',
|
|
20
|
-
answer: 'Да. Каждое нажатие на кубик добавляет его в мешочек. Если вы нажмете d6 три раза, в мешочке появится \"3d6\". Чтобы уменьшить количество, нажмите кнопку \"−\" рядом с группой кубиков в мешочке.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Насколько цифровые кости случайны по сравнению с настоящими?',
|
|
24
|
-
answer: 'Статистически - абсолютно. Современные движки JavaScript используют алгоритмы псевдослучайных чисел (xorshift128+) с очень высоким качеством равномерного распределения. Настоящий физический кубик может иметь микродефекты изготовления, влияющие на результат; у цифрового кубика такой проблемы нет.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
question: 'Что такое d100 и как его использовать?',
|
|
28
|
-
answer: 'd100 (или d%) генерирует число от 1 до 100 и используется в игровых системах на основе процентов, таких как Call of Cthulhu или Warhammer Fantasy Roleplay. Он представляет собой \"прямую вероятность\": если ваш навык Скрытность равен 65%, вам нужно выбросить 65 или меньше для успеха.',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
-
{ name: 'Создайте пул костей', text: 'Нажимайте на кнопки кубиков (d4, d6, d8...), чтобы добавить их в свой пул. Каждое нажатие добавляет один кубик выбранного типа. Вы можете смешивать разные типы в одном броске.' },
|
|
34
|
-
{ name: 'Настройте модификатор', text: 'Используйте кнопки \"+\" и \"−\" рядом с модификатором, чтобы применить бонусы или штрафы (например, модификатор характеристики в D&D). Модификатор автоматически добавляется к общей сумме.' },
|
|
35
|
-
{ name: 'Бросайте кости', text: 'Нажмите кнопку \"Бросить кости\". На правой панели отобразится итоговая сумма и детализация каждого кубика: критические успехи (максимум) выделены зеленым, а провалы (минимум) - красным.' },
|
|
36
|
-
{ name: 'История бросков', text: 'Каждый бросок записывается в историю с указанием формулы кубиков, общего результата и точного времени. Вы можете очистить историю соответствующей кнопкой.' },
|
|
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: 'ru',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const content: DiceRollerLocaleContent = {
|
|
73
|
-
slug,
|
|
74
|
-
title,
|
|
75
|
-
description,
|
|
76
|
-
faqTitle: 'Часто задаваемые вопросы',
|
|
77
|
-
ui: {
|
|
78
|
-
title: 'Симулятор костей',
|
|
79
|
-
description: 'Пусть удача сопутствует вам.',
|
|
80
|
-
rollBtn: 'Бросить кости',
|
|
81
|
-
totalLabel: 'Итого',
|
|
82
|
-
historyLabel: 'История',
|
|
83
|
-
clearHistoryBtn: 'Очистить историю',
|
|
84
|
-
faqTitle: 'FAQ',
|
|
85
|
-
bibliographyTitle: 'Ссылки',
|
|
86
|
-
addDiceLabel: 'Добавить кости в мешочек',
|
|
87
|
-
bagLabel: 'Мешочек костей',
|
|
88
|
-
emptyBagBtn: 'Очистить',
|
|
89
|
-
emptyBagText: 'Нажмите на кости, чтобы добавить их',
|
|
90
|
-
modifierLabel: 'Модификатор',
|
|
91
|
-
rollManyLabel: 'Бросить $COUNT костей',
|
|
92
|
-
rollOneLabel: 'Бросить $COUNT кость',
|
|
93
|
-
preRollText: 'Добавьте кости и бросайте',
|
|
94
|
-
emptyHistoryText: 'История бросков появится здесь'
|
|
95
|
-
},
|
|
96
|
-
seo: [
|
|
97
|
-
{ type: 'title', text: 'Искусство случая: история и математика игровых костей', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: 'Кости - один из старейших генераторов случайности, созданных человечеством. <strong>Астрагалы</strong> - пяточные кости овец и коз - использовались как примитивные четырехгранные кости еще в 5000 году до н. э. в Месопотамии и Египте. Эволюция от резной кости до современных икосаэдров из эпоксидной смолы - это не просто эстетика: это путь сквозь теорию вероятностей и проектирование игровых механик.' },
|
|
99
|
-
{ type: 'title', text: 'Стандартное семейство костей', level: 3 },
|
|
100
|
-
{ type: 'paragraph', html: 'Самый распространенный набор костей в ролевых играх, популяризированный <strong>Dungeons & Dragons</strong> в 1974 году, состоит из пяти Платоновых тел и двух дополнительных форм: d4 (тетраэдр), d6 (куб), d8 (октаэдр), d10 (пентагональный трапецоэдр), d12 (додекаэдр), d20 (икосаэдр) и d100 (процентный кубик). Каждый многогранник гарантирует равномерное распределение: все грани имеют абсолютно одинаковую вероятность выпадения.' },
|
|
101
|
-
{ type: 'list', items: [
|
|
102
|
-
'<strong>d4 - тетраэдр:</strong> Самый опасный, если наступить на него босиком. Четыре треугольные грани, вероятность 25% на каждую. Обычно используется для урона кинжалом или заклинаний низкого уровня.',
|
|
103
|
-
'<strong>d6 - куб:</strong> Самый универсальный кубик. Присутствует во всех настольных играх со времен египетского сенета. Его кубическая геометрия гарантирует идеальное равнораспределение.',
|
|
104
|
-
'<strong>d8 - октаэдр:</strong> Кубик копья или боевого топора. Восемь равносторонних треугольных граней. Вероятность 12,5% на грань.',
|
|
105
|
-
'<strong>d10 - пентагональный трапецоэдр:</strong> Единственное не Платоново тело в стандартном наборе. Две противоположные грани на каждую \"вершину\". Необходим для d100 (два кубика d10 вместе).',
|
|
106
|
-
'<strong>d12 - додекаэдр:</strong> Кубик варвара. Двенадцать пятиугольных граней. Недооценен во многих системах, главный инструмент варвара в D&D 5e.',
|
|
107
|
-
'<strong>d20 - икосаэдр:</strong> Король RPG. Двадцать треугольных граней. Главный герой системы d20: определяет успех или провал почти всех действий.',
|
|
108
|
-
'<strong>d100 - проценты:</strong> Два кубика d10 вместе (десятки + единицы). Определяет точные вероятности в таких системах, как Call of Cthulhu или Warhammer Fantasy.',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'stats', items: [
|
|
111
|
-
{ value: '5000 лет до н.э.', label: 'Первые кости (астрагалы)', icon: 'mdi:history' },
|
|
112
|
-
{ value: '1974', label: 'D&D популяризировала набор', icon: 'mdi:sword' },
|
|
113
|
-
{ value: '7 типов', label: 'Стандартные кости RPG', icon: 'mdi:dice-multiple' },
|
|
114
|
-
{ value: '2¹²⁸', label: 'Период случайности JS', icon: 'mdi:function-variant' },
|
|
115
|
-
], columns: 4 },
|
|
116
|
-
{ type: 'title', text: 'Вероятности и кривые распределения', level: 3 },
|
|
117
|
-
{ type: 'paragraph', html: 'Когда вы бросаете один кубик, вы получаете <strong>дискретное равномерное распределение</strong>: каждый результат имеет абсолютно одинаковую вероятность (1/n). Но как только вы объединяете несколько кубиков, математическая магия превращает эту плоскую кривую в <strong>приблизительное нормальное распределение</strong>. Вот почему 2d6 - это не то же самое, что 1d12: с двумя шестигранными кубиками вероятность выбросить 7 составляет 6/36 ≈ 16,7%, в то время как крайние значения (2 и 12) выпадают лишь в 2,8% случаев.' },
|
|
118
|
-
{ type: 'tip', title: 'Преимущество и помеха (D&D 5e)', html: 'Механика <strong>Преимущества</strong> заключается в броске 2d20 и выборе большего результата. Математически это поднимает среднее значение с 10,5 до примерно 13,8. <strong>Помеха</strong> делает обратное: берется меньший результат, что снижает среднее до 7,2. Наш симулятор позволяет это воссоздать, добавив два d20 в мешочек и сравнив результаты.' },
|
|
119
|
-
{ type: 'title', text: 'Модификаторы: мост между кубиком и персонажем', level: 3 },
|
|
120
|
-
{ type: 'paragraph', html: 'В большинстве ролевых систем кубик не действует в одиночку: добавляется или вычитается <strong>модификатор</strong>, представляющий способности персонажа. В D&D 5e модификатор Силы +5 означает, что вы бросаете 1d20, прибавляете 5 и сравниваете результат с Классом Брони врага. Наш симулятор включает управление модификатором, чтобы точно отражать эти механики.' },
|
|
121
|
-
{ type: 'tip', title: 'Стандарт нотации костей', html: 'Нотация <strong>XdY+Z</strong> является стандартом де-факто в ролевых играх: X кубиков с Y гранями плюс модификатор Z. \"3d6+2\" означает бросок трех шестигранных костей и прибавление 2 к итогу. Наш инструмент использует эту нотацию в истории, чтобы вы могли легко делиться бросками или записывать их.' },
|
|
122
|
-
{ type: 'glossary', items: [
|
|
123
|
-
{ term: 'Критический успех', definition: 'Выпадение максимального значения на кубике (например, 20 на d20). Обычно вызывает особые бонусные эффекты в большинстве систем RPG.' },
|
|
124
|
-
{ term: 'Провал / Натуральная 1', definition: 'Выпадение минимального значения (1) на кубике. Часто приводит к драматическому провалу или негативным последствиям.' },
|
|
125
|
-
{ term: 'Пул костей', definition: 'Группа костей, бросаемых одновременно. Пул в нашем инструменте показывает каждый тип кубика, сгруппированный по количеству (например, 3d6 + 2d8).' },
|
|
126
|
-
{ term: 'Модификатор', definition: 'Фиксированное число, прибавляемое к результату броска или вычитаемое из него, представляющее навык персонажа, бонус характеристики или штраф за ситуацию.' },
|
|
127
|
-
{ term: 'Процентный бросок', definition: 'Бросок с использованием двух d10 для получения результата от 1 до 100, используется в системах навыков, где способности измеряются в процентах.' },
|
|
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 = 'simulator-kostey';
|
|
6
|
+
const title = 'Симулятор костей';
|
|
7
|
+
const description = 'Полный симулятор костей для ваших RPG и настольных игр. Бросайте d4, d6, d8, d10, d12, d20 и d100 с модификаторами и историей.';
|
|
8
|
+
|
|
9
|
+
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Как симулировать бросок с преимуществом (D&D)?',
|
|
12
|
+
answer: 'Добавьте два кубика d20 в мешочек, дважды нажав на кнопку d20. При броске обратите внимание на два отдельных результата и оставьте больший. Отображаемое общее число будет их суммой, но вы можете увидеть каждый кубик отдельно в детализации результатов.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Что означает зеленый или красный цвет в результатах?',
|
|
16
|
+
answer: 'Зеленый результат означает, что на кубике выпало максимально возможное значение (\"критический успех\"). Красный результат означает минимальное значение (\"1\", худший из возможных результатов). Это позволяет мгновенно замечать \"криты\" и \"провалы\".',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Можно ли добавить несколько костей одного типа?',
|
|
20
|
+
answer: 'Да. Каждое нажатие на кубик добавляет его в мешочек. Если вы нажмете d6 три раза, в мешочке появится \"3d6\". Чтобы уменьшить количество, нажмите кнопку \"−\" рядом с группой кубиков в мешочке.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Насколько цифровые кости случайны по сравнению с настоящими?',
|
|
24
|
+
answer: 'Статистически - абсолютно. Современные движки JavaScript используют алгоритмы псевдослучайных чисел (xorshift128+) с очень высоким качеством равномерного распределения. Настоящий физический кубик может иметь микродефекты изготовления, влияющие на результат; у цифрового кубика такой проблемы нет.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Что такое d100 и как его использовать?',
|
|
28
|
+
answer: 'd100 (или d%) генерирует число от 1 до 100 и используется в игровых системах на основе процентов, таких как Call of Cthulhu или Warhammer Fantasy Roleplay. Он представляет собой \"прямую вероятность\": если ваш навык Скрытность равен 65%, вам нужно выбросить 65 или меньше для успеха.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
+
{ name: 'Создайте пул костей', text: 'Нажимайте на кнопки кубиков (d4, d6, d8...), чтобы добавить их в свой пул. Каждое нажатие добавляет один кубик выбранного типа. Вы можете смешивать разные типы в одном броске.' },
|
|
34
|
+
{ name: 'Настройте модификатор', text: 'Используйте кнопки \"+\" и \"−\" рядом с модификатором, чтобы применить бонусы или штрафы (например, модификатор характеристики в D&D). Модификатор автоматически добавляется к общей сумме.' },
|
|
35
|
+
{ name: 'Бросайте кости', text: 'Нажмите кнопку \"Бросить кости\". На правой панели отобразится итоговая сумма и детализация каждого кубика: критические успехи (максимум) выделены зеленым, а провалы (минимум) - красным.' },
|
|
36
|
+
{ name: 'История бросков', text: 'Каждый бросок записывается в историю с указанием формулы кубиков, общего результата и точного времени. Вы можете очистить историю соответствующей кнопкой.' },
|
|
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: 'ru',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const content: DiceRollerLocaleContent = {
|
|
73
|
+
slug,
|
|
74
|
+
title,
|
|
75
|
+
description,
|
|
76
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
77
|
+
ui: {
|
|
78
|
+
title: 'Симулятор костей',
|
|
79
|
+
description: 'Пусть удача сопутствует вам.',
|
|
80
|
+
rollBtn: 'Бросить кости',
|
|
81
|
+
totalLabel: 'Итого',
|
|
82
|
+
historyLabel: 'История',
|
|
83
|
+
clearHistoryBtn: 'Очистить историю',
|
|
84
|
+
faqTitle: 'FAQ',
|
|
85
|
+
bibliographyTitle: 'Ссылки',
|
|
86
|
+
addDiceLabel: 'Добавить кости в мешочек',
|
|
87
|
+
bagLabel: 'Мешочек костей',
|
|
88
|
+
emptyBagBtn: 'Очистить',
|
|
89
|
+
emptyBagText: 'Нажмите на кости, чтобы добавить их',
|
|
90
|
+
modifierLabel: 'Модификатор',
|
|
91
|
+
rollManyLabel: 'Бросить $COUNT костей',
|
|
92
|
+
rollOneLabel: 'Бросить $COUNT кость',
|
|
93
|
+
preRollText: 'Добавьте кости и бросайте',
|
|
94
|
+
emptyHistoryText: 'История бросков появится здесь'
|
|
95
|
+
},
|
|
96
|
+
seo: [
|
|
97
|
+
{ type: 'title', text: 'Искусство случая: история и математика игровых костей', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Кости - один из старейших генераторов случайности, созданных человечеством. <strong>Астрагалы</strong> - пяточные кости овец и коз - использовались как примитивные четырехгранные кости еще в 5000 году до н. э. в Месопотамии и Египте. Эволюция от резной кости до современных икосаэдров из эпоксидной смолы - это не просто эстетика: это путь сквозь теорию вероятностей и проектирование игровых механик.' },
|
|
99
|
+
{ type: 'title', text: 'Стандартное семейство костей', level: 3 },
|
|
100
|
+
{ type: 'paragraph', html: 'Самый распространенный набор костей в ролевых играх, популяризированный <strong>Dungeons & Dragons</strong> в 1974 году, состоит из пяти Платоновых тел и двух дополнительных форм: d4 (тетраэдр), d6 (куб), d8 (октаэдр), d10 (пентагональный трапецоэдр), d12 (додекаэдр), d20 (икосаэдр) и d100 (процентный кубик). Каждый многогранник гарантирует равномерное распределение: все грани имеют абсолютно одинаковую вероятность выпадения.' },
|
|
101
|
+
{ type: 'list', items: [
|
|
102
|
+
'<strong>d4 - тетраэдр:</strong> Самый опасный, если наступить на него босиком. Четыре треугольные грани, вероятность 25% на каждую. Обычно используется для урона кинжалом или заклинаний низкого уровня.',
|
|
103
|
+
'<strong>d6 - куб:</strong> Самый универсальный кубик. Присутствует во всех настольных играх со времен египетского сенета. Его кубическая геометрия гарантирует идеальное равнораспределение.',
|
|
104
|
+
'<strong>d8 - октаэдр:</strong> Кубик копья или боевого топора. Восемь равносторонних треугольных граней. Вероятность 12,5% на грань.',
|
|
105
|
+
'<strong>d10 - пентагональный трапецоэдр:</strong> Единственное не Платоново тело в стандартном наборе. Две противоположные грани на каждую \"вершину\". Необходим для d100 (два кубика d10 вместе).',
|
|
106
|
+
'<strong>d12 - додекаэдр:</strong> Кубик варвара. Двенадцать пятиугольных граней. Недооценен во многих системах, главный инструмент варвара в D&D 5e.',
|
|
107
|
+
'<strong>d20 - икосаэдр:</strong> Король RPG. Двадцать треугольных граней. Главный герой системы d20: определяет успех или провал почти всех действий.',
|
|
108
|
+
'<strong>d100 - проценты:</strong> Два кубика d10 вместе (десятки + единицы). Определяет точные вероятности в таких системах, как Call of Cthulhu или Warhammer Fantasy.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'stats', items: [
|
|
111
|
+
{ value: '5000 лет до н.э.', label: 'Первые кости (астрагалы)', icon: 'mdi:history' },
|
|
112
|
+
{ value: '1974', label: 'D&D популяризировала набор', icon: 'mdi:sword' },
|
|
113
|
+
{ value: '7 типов', label: 'Стандартные кости RPG', icon: 'mdi:dice-multiple' },
|
|
114
|
+
{ value: '2¹²⁸', label: 'Период случайности JS', icon: 'mdi:function-variant' },
|
|
115
|
+
], columns: 4 },
|
|
116
|
+
{ type: 'title', text: 'Вероятности и кривые распределения', level: 3 },
|
|
117
|
+
{ type: 'paragraph', html: 'Когда вы бросаете один кубик, вы получаете <strong>дискретное равномерное распределение</strong>: каждый результат имеет абсолютно одинаковую вероятность (1/n). Но как только вы объединяете несколько кубиков, математическая магия превращает эту плоскую кривую в <strong>приблизительное нормальное распределение</strong>. Вот почему 2d6 - это не то же самое, что 1d12: с двумя шестигранными кубиками вероятность выбросить 7 составляет 6/36 ≈ 16,7%, в то время как крайние значения (2 и 12) выпадают лишь в 2,8% случаев.' },
|
|
118
|
+
{ type: 'tip', title: 'Преимущество и помеха (D&D 5e)', html: 'Механика <strong>Преимущества</strong> заключается в броске 2d20 и выборе большего результата. Математически это поднимает среднее значение с 10,5 до примерно 13,8. <strong>Помеха</strong> делает обратное: берется меньший результат, что снижает среднее до 7,2. Наш симулятор позволяет это воссоздать, добавив два d20 в мешочек и сравнив результаты.' },
|
|
119
|
+
{ type: 'title', text: 'Модификаторы: мост между кубиком и персонажем', level: 3 },
|
|
120
|
+
{ type: 'paragraph', html: 'В большинстве ролевых систем кубик не действует в одиночку: добавляется или вычитается <strong>модификатор</strong>, представляющий способности персонажа. В D&D 5e модификатор Силы +5 означает, что вы бросаете 1d20, прибавляете 5 и сравниваете результат с Классом Брони врага. Наш симулятор включает управление модификатором, чтобы точно отражать эти механики.' },
|
|
121
|
+
{ type: 'tip', title: 'Стандарт нотации костей', html: 'Нотация <strong>XdY+Z</strong> является стандартом де-факто в ролевых играх: X кубиков с Y гранями плюс модификатор Z. \"3d6+2\" означает бросок трех шестигранных костей и прибавление 2 к итогу. Наш инструмент использует эту нотацию в истории, чтобы вы могли легко делиться бросками или записывать их.' },
|
|
122
|
+
{ type: 'glossary', items: [
|
|
123
|
+
{ term: 'Критический успех', definition: 'Выпадение максимального значения на кубике (например, 20 на d20). Обычно вызывает особые бонусные эффекты в большинстве систем RPG.' },
|
|
124
|
+
{ term: 'Провал / Натуральная 1', definition: 'Выпадение минимального значения (1) на кубике. Часто приводит к драматическому провалу или негативным последствиям.' },
|
|
125
|
+
{ term: 'Пул костей', definition: 'Группа костей, бросаемых одновременно. Пул в нашем инструменте показывает каждый тип кубика, сгруппированный по количеству (например, 3d6 + 2d8).' },
|
|
126
|
+
{ term: 'Модификатор', definition: 'Фиксированное число, прибавляемое к результату броска или вычитаемое из него, представляющее навык персонажа, бонус характеристики или штраф за ситуацию.' },
|
|
127
|
+
{ term: 'Процентный бросок', definition: 'Бросок с использованием двух d10 для получения результата от 1 до 100, используется в системах навыков, где способности измеряются в процентах.' },
|
|
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 = 'tarningsgenerator';
|
|
6
|
-
const title = 'Tärningsgenerator';
|
|
7
|
-
const description = 'En komplett tärningssimulator för dina rollspel och brädspel. Slå d4, d6, d8, d10, d12, d20 och d100 med modifierare och historik.';
|
|
8
|
-
|
|
9
|
-
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Hur kan jag simulera ett slag med fördel (advantage) som i D&D?',
|
|
12
|
-
answer: 'Lägg till två d20-tärningar i påsen genom att klicka på d20-knappen två gånger. När du slår, titta på de två individuella resultaten och behåll det högsta. Det visade totalvärdet kommer att vara summan, men du kan se varje tärning separat i resultatöversikten.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Vad betyder den gröna eller röda färgen på resultaten?',
|
|
16
|
-
answer: 'Gröna resultat indikerar att tärningen slog sitt högsta möjliga värde (en "krit"). Röda resultat indikerar det lägsta värdet (en "1", det sämsta möjliga resultatet). Detta gör det enkelt att upptäcka kritiska framgångar och misslyckanden på ett ögonblick.',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'Kan jag lägga till flera tärningar av samma typ?',
|
|
20
|
-
answer: 'Ja. Varje klick på en tärning lägger till den i påsen. Om du klickar på d6 tre gånger visar påsen "3d6". För att minska antalet, klicka på "−"-knappen som visas bredvid varje tärningsgrupp i påsen.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Är digitala tärningar lika slumpmässiga som fysiska?',
|
|
24
|
-
answer: 'Statistiskt sett, ja. Moderna JavaScript-motorer använder pseudoslumpartade algoritmer (xorshift128+) med en mycket högkvalitativ likformig fördelning. En riktig fysisk tärning kan ha små tillverkningsdefekter som påverkar resultaten; den digitala tärningen har inte det problemet.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
question: 'Vad är d100 och hur används den?',
|
|
28
|
-
answer: 'd100 (eller d%) genererar ett tal från 1 till 100 och används i procentbaserade spelsystem, som Call of Cthulhu eller Warhammer Fantasy Roleplay. Den representerar "direkt sannolikhet": om din Stealth-färdighet är 65%, behöver du slå 65 eller lägre för att lyckas.',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
-
{ name: 'Bygg din tärningspool', text: 'Klicka på tärningsknapparna (d4, d6, d8...) för att lägga till dem i din pool. Varje klick lägger till en tärning av den valda typen. Du kan blanda olika typer i samma slag.' },
|
|
34
|
-
{ name: 'Justera modifieraren', text: 'Använd "+"- och "−"-knapparna bredvid modifieraren för att lägga till bonusar eller avdrag (som förmågemodifieraren i D&D). Modifieraren läggs automatiskt till i totalen.' },
|
|
35
|
-
{ name: 'Slå tärningarna', text: 'Tryck på knappen "Slå tärning". Den högra panelen visar det slutliga resultatet och en översikt av varje enskild tärning, med "krits" (maxvärde) i grönt och misslyckanden (minvärde) i rött.' },
|
|
36
|
-
{ name: 'Kontrollera historiken', text: 'Varje slag registreras i historiken med tärningsnotationen som användes, det totala resultatet och den exakta tidpunkten. Du kan rensa historiken med tillhörande knapp.' },
|
|
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: 'sv',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const content: DiceRollerLocaleContent = {
|
|
73
|
-
slug,
|
|
74
|
-
title,
|
|
75
|
-
description,
|
|
76
|
-
faqTitle: 'Vanliga frågor',
|
|
77
|
-
ui: {
|
|
78
|
-
title: 'Tärningsgenerator',
|
|
79
|
-
description: 'Må lyckan vara med dig.',
|
|
80
|
-
rollBtn: 'Slå tärning',
|
|
81
|
-
totalLabel: 'Total',
|
|
82
|
-
historyLabel: 'Historik',
|
|
83
|
-
clearHistoryBtn: 'Rensa historik',
|
|
84
|
-
faqTitle: 'FAQ',
|
|
85
|
-
bibliographyTitle: 'Referenser',
|
|
86
|
-
addDiceLabel: 'Lägg till tärningar i påsen',
|
|
87
|
-
bagLabel: 'Tärningspåse',
|
|
88
|
-
emptyBagBtn: 'Töm',
|
|
89
|
-
emptyBagText: 'Klicka på tärningarna för att lägga till',
|
|
90
|
-
modifierLabel: 'Modifierare',
|
|
91
|
-
rollManyLabel: 'Slå $COUNT tärningar',
|
|
92
|
-
rollOneLabel: 'Slå $COUNT tärning',
|
|
93
|
-
preRollText: 'Lägg till tärningar och slå',
|
|
94
|
-
emptyHistoryText: 'Historik över slag visas här'
|
|
95
|
-
},
|
|
96
|
-
seo: [
|
|
97
|
-
{ type: 'title', text: 'Slumpens konst: Tärningars historia och matematik', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: 'Tärningar är en av mänsklighetens äldsta slumpgeneratorer. <strong>Astragaler</strong> - fotleder från får och getter - användes som primitiva fyrsidiga tärningar så tidigt som 5000 f.Kr. i Mesopotamien och Egypten. Evolutionen från snidade ben till moderna ikosaedrar i epoxiharts är inte bara estetisk: det är en resa genom sannolikhetsteori och spelmekanisk design.' },
|
|
99
|
-
{ type: 'title', text: 'Den vanliga tärningsfamiljen', level: 3 },
|
|
100
|
-
{ type: 'paragraph', html: 'Den mest spridda uppsättningen tärningar i rollspel - populariserad av <strong>Dungeons & Dragons</strong> 1974 - består av de fem platonska kropparna plus två ytterligare former: d4 (tetraeder), d6 (kub), d8 (oktaeder), d10 (pentagonal trapetsoeder), d12 (dodekaeder), d20 (ikosaeder) och d100 (procenttärning). Varje polyeder garanterar en likformig fördelning: alla sidor har exakt samma sannolikhet att hamna uppåt.' },
|
|
101
|
-
{ type: 'list', items: [
|
|
102
|
-
'<strong>d4 - Tetraeder:</strong> Den farligaste att trampa på barfota. Fyra triangulära sidor, 25% sannolikhet per sida. Används ofta för dolkskada eller trollformler på låg nivå.',
|
|
103
|
-
'<strong>d6 - Kub:</strong> Den mest universella tärningen. Har funnits i alla brädspel sedan det egyptiska senet. Dess kubiska geometri garanterar perfekt fördelning.',
|
|
104
|
-
'<strong>d8 - Oktaeder:</strong> Tärningen för spjut eller stridsyxa. Åtta liksidiga triangulära sidor. 12,5% sannolikhet per sida.',
|
|
105
|
-
'<strong>d10 - Pentagonal trapetsoeder:</strong> Den enda icke-platonska kroppen i standarduppsättningen. Två motsatta sidor per "hörn". Viktig för d100 (två d10:or kombinerade).',
|
|
106
|
-
'<strong>d12 - Dodekaeder:</strong> Barbarens tärning. Tolv femkantiga sidor. Underskattas i många system, men huvudperson för barbaren i D&D 5e.',
|
|
107
|
-
'<strong>d20 - Ikosaeder:</strong> Rollspelens kung. Tjugo triangulära sidor. Huvudperson i d20-systemet: avgör framgång eller misslyckande för nästan alla handlingar.',
|
|
108
|
-
'<strong>d100 - Procenttärning:</strong> Två d10:or kombinerade (tiotal + ental). Definierar exakta sannolikheter i system som Call of Cthulhu eller Warhammer Fantasy.',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'stats', items: [
|
|
111
|
-
{ value: '5000 f.Kr.', label: 'Första tärningarna (astragaler)', icon: 'mdi:history' },
|
|
112
|
-
{ value: '1974', label: 'D&D populariserade settet', icon: 'mdi:sword' },
|
|
113
|
-
{ value: '7 typer', label: 'Standard-rollspelstärningar', icon: 'mdi:dice-multiple' },
|
|
114
|
-
{ value: '2¹²⁸', label: 'JS-slumpens period', icon: 'mdi:function-variant' },
|
|
115
|
-
], columns: 4 },
|
|
116
|
-
{ type: 'title', text: 'Sannolikheter och fördelningskurvor', level: 3 },
|
|
117
|
-
{ type: 'paragraph', html: 'När du slår en enkel tärning får du en <strong>diskret likformig fördelning</strong>: varje resultat har exakt samma sannolikhet (1/n). Men så fort du kombinerar flera tärningar omvandlas den platta kurvan till en <strong>approximativ normalfördelning</strong>. Det är därför 2d6 inte är samma sak som 1d12: med två sexsidiga tärningar är sannolikheten att slå en 7:a 6/36 ≈ 16,7%, medan extremvärdena (2 och 12) bara inträffar 2,8% av gångerna.' },
|
|
118
|
-
{ type: 'tip', title: 'Fördel och nackdel (Advantage/Disadvantage, D&D 5e)', html: 'Mekaniken <strong>Fördel</strong> innebär att man slår 2d20 och behåller det högre resultatet. Matematiskt höjer detta genomsnittet från 10,5 till ca 13,8. <strong>Nackdel</strong> gör motsatsen: behåll det lägre, vilket sänker genomsnittet till ca 7,2. Vår generator låter dig simulera detta genom att lägga till två d20 i påsen och jämföra resultaten.' },
|
|
119
|
-
{ type: 'title', text: 'Modifierare: Bron mellan tärning och karaktär', level: 3 },
|
|
120
|
-
{ type: 'paragraph', html: 'I de flesta rollspelssystem agerar inte tärningen ensam: en <strong>modifierare</strong> som representerar karaktärens förmågor läggs till eller dras ifrån. I D&D 5e betyder en Strength-modifierare på +5 att du slår 1d20, lägger till 5 och jämför resultatet mot fiendens Armor Class. Vår generator innehåller en kontroll för modifierare för att troget återspegla dessa mekaniker.' },
|
|
121
|
-
{ type: 'tip', title: 'Standard för tärningsnotation', html: 'Notation <strong>XdY+Z</strong> är standard inom rollspel: X tärningar med Y sidor med modifierare Z. "3d6+2" betyder slå tre sexsidiga tärningar och lägg till 2 till totalen. Vårt verktyg använder denna notation i historiken så att du enkelt kan dela eller spara dina slag.' },
|
|
122
|
-
{ type: 'glossary', items: [
|
|
123
|
-
{ term: 'Kritisk träff', definition: 'Ett slag med det högsta värdet på en tärning (t.ex. en 20:a på en d20). Utlöser vanligtvis speciella bonus-effekter i de flesta rollspelssystem.' },
|
|
124
|
-
{ term: 'Fumble / Nat 1', definition: 'Att slå det lägsta värdet (1) på en tärning. Resulterar ofta i ett dramatiskt misslyckande eller negativa konsekvenser.' },
|
|
125
|
-
{ term: 'Dice Pool', definition: 'En samling tärningar som slås samtidigt. Poolen i vårt verktyg visar varje tärningstyp grupperad efter antal (t.ex. 3d6 + 2d8).' },
|
|
126
|
-
{ term: 'Modifierare', definition: 'Ett fast tal som läggs till eller dras ifrån ett resultat, och som representerar en karaktärs skicklighet, attributbonus eller situationell bestraffning.' },
|
|
127
|
-
{ term: 'Procentslag', definition: 'Ett slag som använder två d10 för att producera ett resultat från 1-100, används i färdighetsbaserade system där förmågor mäts i procent.' },
|
|
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 = 'tarningsgenerator';
|
|
6
|
+
const title = 'Tärningsgenerator';
|
|
7
|
+
const description = 'En komplett tärningssimulator för dina rollspel och brädspel. Slå d4, d6, d8, d10, d12, d20 och d100 med modifierare och historik.';
|
|
8
|
+
|
|
9
|
+
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Hur kan jag simulera ett slag med fördel (advantage) som i D&D?',
|
|
12
|
+
answer: 'Lägg till två d20-tärningar i påsen genom att klicka på d20-knappen två gånger. När du slår, titta på de två individuella resultaten och behåll det högsta. Det visade totalvärdet kommer att vara summan, men du kan se varje tärning separat i resultatöversikten.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Vad betyder den gröna eller röda färgen på resultaten?',
|
|
16
|
+
answer: 'Gröna resultat indikerar att tärningen slog sitt högsta möjliga värde (en "krit"). Röda resultat indikerar det lägsta värdet (en "1", det sämsta möjliga resultatet). Detta gör det enkelt att upptäcka kritiska framgångar och misslyckanden på ett ögonblick.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Kan jag lägga till flera tärningar av samma typ?',
|
|
20
|
+
answer: 'Ja. Varje klick på en tärning lägger till den i påsen. Om du klickar på d6 tre gånger visar påsen "3d6". För att minska antalet, klicka på "−"-knappen som visas bredvid varje tärningsgrupp i påsen.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Är digitala tärningar lika slumpmässiga som fysiska?',
|
|
24
|
+
answer: 'Statistiskt sett, ja. Moderna JavaScript-motorer använder pseudoslumpartade algoritmer (xorshift128+) med en mycket högkvalitativ likformig fördelning. En riktig fysisk tärning kan ha små tillverkningsdefekter som påverkar resultaten; den digitala tärningen har inte det problemet.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Vad är d100 och hur används den?',
|
|
28
|
+
answer: 'd100 (eller d%) genererar ett tal från 1 till 100 och används i procentbaserade spelsystem, som Call of Cthulhu eller Warhammer Fantasy Roleplay. Den representerar "direkt sannolikhet": om din Stealth-färdighet är 65%, behöver du slå 65 eller lägre för att lyckas.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
+
{ name: 'Bygg din tärningspool', text: 'Klicka på tärningsknapparna (d4, d6, d8...) för att lägga till dem i din pool. Varje klick lägger till en tärning av den valda typen. Du kan blanda olika typer i samma slag.' },
|
|
34
|
+
{ name: 'Justera modifieraren', text: 'Använd "+"- och "−"-knapparna bredvid modifieraren för att lägga till bonusar eller avdrag (som förmågemodifieraren i D&D). Modifieraren läggs automatiskt till i totalen.' },
|
|
35
|
+
{ name: 'Slå tärningarna', text: 'Tryck på knappen "Slå tärning". Den högra panelen visar det slutliga resultatet och en översikt av varje enskild tärning, med "krits" (maxvärde) i grönt och misslyckanden (minvärde) i rött.' },
|
|
36
|
+
{ name: 'Kontrollera historiken', text: 'Varje slag registreras i historiken med tärningsnotationen som användes, det totala resultatet och den exakta tidpunkten. Du kan rensa historiken med tillhörande knapp.' },
|
|
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: 'sv',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const content: DiceRollerLocaleContent = {
|
|
73
|
+
slug,
|
|
74
|
+
title,
|
|
75
|
+
description,
|
|
76
|
+
faqTitle: 'Vanliga frågor',
|
|
77
|
+
ui: {
|
|
78
|
+
title: 'Tärningsgenerator',
|
|
79
|
+
description: 'Må lyckan vara med dig.',
|
|
80
|
+
rollBtn: 'Slå tärning',
|
|
81
|
+
totalLabel: 'Total',
|
|
82
|
+
historyLabel: 'Historik',
|
|
83
|
+
clearHistoryBtn: 'Rensa historik',
|
|
84
|
+
faqTitle: 'FAQ',
|
|
85
|
+
bibliographyTitle: 'Referenser',
|
|
86
|
+
addDiceLabel: 'Lägg till tärningar i påsen',
|
|
87
|
+
bagLabel: 'Tärningspåse',
|
|
88
|
+
emptyBagBtn: 'Töm',
|
|
89
|
+
emptyBagText: 'Klicka på tärningarna för att lägga till',
|
|
90
|
+
modifierLabel: 'Modifierare',
|
|
91
|
+
rollManyLabel: 'Slå $COUNT tärningar',
|
|
92
|
+
rollOneLabel: 'Slå $COUNT tärning',
|
|
93
|
+
preRollText: 'Lägg till tärningar och slå',
|
|
94
|
+
emptyHistoryText: 'Historik över slag visas här'
|
|
95
|
+
},
|
|
96
|
+
seo: [
|
|
97
|
+
{ type: 'title', text: 'Slumpens konst: Tärningars historia och matematik', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Tärningar är en av mänsklighetens äldsta slumpgeneratorer. <strong>Astragaler</strong> - fotleder från får och getter - användes som primitiva fyrsidiga tärningar så tidigt som 5000 f.Kr. i Mesopotamien och Egypten. Evolutionen från snidade ben till moderna ikosaedrar i epoxiharts är inte bara estetisk: det är en resa genom sannolikhetsteori och spelmekanisk design.' },
|
|
99
|
+
{ type: 'title', text: 'Den vanliga tärningsfamiljen', level: 3 },
|
|
100
|
+
{ type: 'paragraph', html: 'Den mest spridda uppsättningen tärningar i rollspel - populariserad av <strong>Dungeons & Dragons</strong> 1974 - består av de fem platonska kropparna plus två ytterligare former: d4 (tetraeder), d6 (kub), d8 (oktaeder), d10 (pentagonal trapetsoeder), d12 (dodekaeder), d20 (ikosaeder) och d100 (procenttärning). Varje polyeder garanterar en likformig fördelning: alla sidor har exakt samma sannolikhet att hamna uppåt.' },
|
|
101
|
+
{ type: 'list', items: [
|
|
102
|
+
'<strong>d4 - Tetraeder:</strong> Den farligaste att trampa på barfota. Fyra triangulära sidor, 25% sannolikhet per sida. Används ofta för dolkskada eller trollformler på låg nivå.',
|
|
103
|
+
'<strong>d6 - Kub:</strong> Den mest universella tärningen. Har funnits i alla brädspel sedan det egyptiska senet. Dess kubiska geometri garanterar perfekt fördelning.',
|
|
104
|
+
'<strong>d8 - Oktaeder:</strong> Tärningen för spjut eller stridsyxa. Åtta liksidiga triangulära sidor. 12,5% sannolikhet per sida.',
|
|
105
|
+
'<strong>d10 - Pentagonal trapetsoeder:</strong> Den enda icke-platonska kroppen i standarduppsättningen. Två motsatta sidor per "hörn". Viktig för d100 (två d10:or kombinerade).',
|
|
106
|
+
'<strong>d12 - Dodekaeder:</strong> Barbarens tärning. Tolv femkantiga sidor. Underskattas i många system, men huvudperson för barbaren i D&D 5e.',
|
|
107
|
+
'<strong>d20 - Ikosaeder:</strong> Rollspelens kung. Tjugo triangulära sidor. Huvudperson i d20-systemet: avgör framgång eller misslyckande för nästan alla handlingar.',
|
|
108
|
+
'<strong>d100 - Procenttärning:</strong> Två d10:or kombinerade (tiotal + ental). Definierar exakta sannolikheter i system som Call of Cthulhu eller Warhammer Fantasy.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'stats', items: [
|
|
111
|
+
{ value: '5000 f.Kr.', label: 'Första tärningarna (astragaler)', icon: 'mdi:history' },
|
|
112
|
+
{ value: '1974', label: 'D&D populariserade settet', icon: 'mdi:sword' },
|
|
113
|
+
{ value: '7 typer', label: 'Standard-rollspelstärningar', icon: 'mdi:dice-multiple' },
|
|
114
|
+
{ value: '2¹²⁸', label: 'JS-slumpens period', icon: 'mdi:function-variant' },
|
|
115
|
+
], columns: 4 },
|
|
116
|
+
{ type: 'title', text: 'Sannolikheter och fördelningskurvor', level: 3 },
|
|
117
|
+
{ type: 'paragraph', html: 'När du slår en enkel tärning får du en <strong>diskret likformig fördelning</strong>: varje resultat har exakt samma sannolikhet (1/n). Men så fort du kombinerar flera tärningar omvandlas den platta kurvan till en <strong>approximativ normalfördelning</strong>. Det är därför 2d6 inte är samma sak som 1d12: med två sexsidiga tärningar är sannolikheten att slå en 7:a 6/36 ≈ 16,7%, medan extremvärdena (2 och 12) bara inträffar 2,8% av gångerna.' },
|
|
118
|
+
{ type: 'tip', title: 'Fördel och nackdel (Advantage/Disadvantage, D&D 5e)', html: 'Mekaniken <strong>Fördel</strong> innebär att man slår 2d20 och behåller det högre resultatet. Matematiskt höjer detta genomsnittet från 10,5 till ca 13,8. <strong>Nackdel</strong> gör motsatsen: behåll det lägre, vilket sänker genomsnittet till ca 7,2. Vår generator låter dig simulera detta genom att lägga till två d20 i påsen och jämföra resultaten.' },
|
|
119
|
+
{ type: 'title', text: 'Modifierare: Bron mellan tärning och karaktär', level: 3 },
|
|
120
|
+
{ type: 'paragraph', html: 'I de flesta rollspelssystem agerar inte tärningen ensam: en <strong>modifierare</strong> som representerar karaktärens förmågor läggs till eller dras ifrån. I D&D 5e betyder en Strength-modifierare på +5 att du slår 1d20, lägger till 5 och jämför resultatet mot fiendens Armor Class. Vår generator innehåller en kontroll för modifierare för att troget återspegla dessa mekaniker.' },
|
|
121
|
+
{ type: 'tip', title: 'Standard för tärningsnotation', html: 'Notation <strong>XdY+Z</strong> är standard inom rollspel: X tärningar med Y sidor med modifierare Z. "3d6+2" betyder slå tre sexsidiga tärningar och lägg till 2 till totalen. Vårt verktyg använder denna notation i historiken så att du enkelt kan dela eller spara dina slag.' },
|
|
122
|
+
{ type: 'glossary', items: [
|
|
123
|
+
{ term: 'Kritisk träff', definition: 'Ett slag med det högsta värdet på en tärning (t.ex. en 20:a på en d20). Utlöser vanligtvis speciella bonus-effekter i de flesta rollspelssystem.' },
|
|
124
|
+
{ term: 'Fumble / Nat 1', definition: 'Att slå det lägsta värdet (1) på en tärning. Resulterar ofta i ett dramatiskt misslyckande eller negativa konsekvenser.' },
|
|
125
|
+
{ term: 'Dice Pool', definition: 'En samling tärningar som slås samtidigt. Poolen i vårt verktyg visar varje tärningstyp grupperad efter antal (t.ex. 3d6 + 2d8).' },
|
|
126
|
+
{ term: 'Modifierare', definition: 'Ett fast tal som läggs till eller dras ifrån ett resultat, och som representerar en karaktärs skicklighet, attributbonus eller situationell bestraffning.' },
|
|
127
|
+
{ term: 'Procentslag', definition: 'Ett slag som använder två d10 för att producera ett resultat från 1-100, används i färdighetsbaserade system där förmågor mäts i procent.' },
|
|
128
|
+
]},
|
|
129
|
+
],
|
|
130
|
+
faq,
|
|
131
|
+
bibliography,
|
|
132
|
+
howTo,
|
|
133
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
+
};
|