@jjlmoya/utils-tabletop 1.13.0 → 1.15.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 +1 -1
- package/src/category/i18n/fr.ts +3 -3
- package/src/category/i18n/zh.ts +7 -7
- package/src/layouts/PreviewLayout.astro +1 -0
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/no_en_dash.test.ts +35 -6
- package/src/tests/script_density.test.ts +94 -0
- package/src/tool/board-game-timer/board-game-timer.css +94 -0
- package/src/tool/board-game-timer/i18n/fr.ts +3 -3
- package/src/tool/board-game-timer/i18n/zh.ts +2 -2
- package/src/tool/decision-wheel/decision-wheel.css +89 -0
- package/src/tool/decision-wheel/i18n/ru.ts +207 -38
- package/src/tool/dice-roller-simulator/dice-roller-simulator.css +111 -0
- package/src/tool/dice-roller-simulator/i18n/fr.ts +6 -6
- package/src/tool/dice-roller-simulator/i18n/ru.ts +5 -5
- package/src/tool/dice-roller-simulator/i18n/zh.ts +4 -4
- package/src/tool/fantasy-runes-translator/i18n/fr.ts +4 -4
- package/src/tool/first-player-selector/i18n/fr.ts +6 -6
- package/src/tool/first-player-selector/i18n/ru.ts +5 -5
- package/src/tool/hidden-role-dealer/hidden-role-dealer.css +81 -0
- package/src/tool/hidden-role-dealer/i18n/fr.ts +3 -3
- package/src/tool/hidden-role-dealer/i18n/ru.ts +1 -1
- package/src/tool/hidden-role-dealer/i18n/zh.ts +1 -1
- package/src/tool/investigation-board/i18n/fr.ts +4 -4
- package/src/tool/investigation-board/i18n/ru.ts +4 -4
- package/src/tool/investigation-board/i18n/zh.ts +2 -2
- package/src/tool/investigation-board/investigation-board.css +81 -1
- package/src/tool/lunar-tide-tracker/i18n/fr.ts +4 -4
- package/src/tool/lunar-tide-tracker/i18n/tr.ts +60 -60
- package/src/tool/rpg-initiative-tracker/i18n/de.ts +1 -1
- package/src/tool/rpg-initiative-tracker/i18n/fr.ts +3 -3
- package/src/tool/scatter-direction-selector/component.astro +1 -1
- package/src/tool/scatter-direction-selector/i18n/pl.ts +3 -3
- package/src/tool/scatter-direction-selector/i18n/ru.ts +3 -3
- package/src/tool/scatter-direction-selector/i18n/tr.ts +3 -3
- package/src/tool/scatter-direction-selector/scatter-direction-selector.css +87 -0
- package/src/tool/score-tracker/i18n/es.ts +62 -62
- package/src/tool/score-tracker/i18n/fr.ts +2 -2
- package/src/tool/score-tracker/i18n/ru.ts +110 -110
- package/src/tool/score-tracker/i18n/tr.ts +53 -53
- package/src/tool/score-tracker/score-tracker.css +83 -0
|
@@ -26,7 +26,7 @@ const faq = [
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
question: 'Можно ли использовать этот инструмент на компьютере?',
|
|
29
|
-
answer: 'Да! Если у вас устройство без сенсорного экрана, инструмент автоматически переключается в режим рулетки. Вы можете нажимать на экран, чтобы разместить цветные пины, представляющие игроков, а затем нажать кнопку
|
|
29
|
+
answer: 'Да! Если у вас устройство без сенсорного экрана, инструмент автоматически переключается в режим рулетки. Вы можете нажимать на экран, чтобы разместить цветные пины, представляющие игроков, а затем нажать кнопку "Начать выбор", чтобы запустить вращение колеса.',
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
question: 'Сколько игроков может участвовать?',
|
|
@@ -58,7 +58,7 @@ const faq = [
|
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
question: 'Что произойдет, если только один игрок?',
|
|
61
|
-
answer: 'В обоих режимах для выбора требуется минимум два игрока. В режиме пальцев обратный отсчет не запустится, пока не будет обнаружено как минимум два пальца. В режиме рулетки кнопка
|
|
61
|
+
answer: 'В обоих режимах для выбора требуется минимум два игрока. В режиме пальцев обратный отсчет не запустится, пока не будет обнаружено как минимум два пальца. В режиме рулетки кнопка "Начать выбор" остается неактивной, пока вы не разместите как минимум два пина.',
|
|
62
62
|
},
|
|
63
63
|
];
|
|
64
64
|
|
|
@@ -69,11 +69,11 @@ const howTo = [
|
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
name: '�,апустите выбор',
|
|
72
|
-
text: 'Для режима пальцев выбор начинается автоматически после удержания в течение нескольких секунд. Для режима рулетки нажмите кнопку
|
|
72
|
+
text: 'Для режима пальцев выбор начинается автоматически после удержания в течение нескольких секунд. Для режима рулетки нажмите кнопку "Начать выбор", чтобы запустить вращение.',
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
name: 'Узнайте победителя',
|
|
76
|
-
text: 'Победитель выделяется пульсирующим эффектом, взрывом частиц и звуковыми фанфарами. Нажмите
|
|
76
|
+
text: 'Победитель выделяется пульсирующим эффектом, взрывом частиц и звуковыми фанфарами. Нажмите "Сбросить" или уберите все пальцы, чтобы попробовать снова.',
|
|
77
77
|
},
|
|
78
78
|
];
|
|
79
79
|
|
|
@@ -95,7 +95,7 @@ export const content: ToolLocaleContent<FirstPlayerSelectorUI> = {
|
|
|
95
95
|
columns: 3,
|
|
96
96
|
},
|
|
97
97
|
{ type: 'title', text: 'Правила настольных игр против цифровых рандомизаторов: Сенсорная революция', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: 'Многие современные правила настольных игр включают тематические правила определения первого игрока, такие как
|
|
98
|
+
{ type: 'paragraph', html: 'Многие современные правила настольных игр включают тематические правила определения первого игрока, такие как "самый молодой игрок ходит первым", "последний посетивший ферму ходит первым" или "самый высокий игрок ходит первым". Хотя это забавно в первых партиях, такие правила быстро становятся повторяющимися, статичными и несправедливыми для постоянных игровых групп. Физические рандомизаторы, такие как броски кубиков или вытягивание карт, увеличивают время подготовки и подвержены человеческой предвзятости или плохому перемешиванию. Механика пальцевого выбора решает эту проблему, предлагая быстрый сенсорный рандомизатор, который выбирает первого игрока за секунды без необходимости в дополнительных картах или кубиках.' },
|
|
99
99
|
{
|
|
100
100
|
type: 'table',
|
|
101
101
|
headers: ['Метод выбора', 'Скорость и подготовка', 'Качество случайности', 'Лучше всего подходит для'],
|
|
@@ -602,3 +602,84 @@
|
|
|
602
602
|
letter-spacing: 0.05em;
|
|
603
603
|
text-transform: uppercase;
|
|
604
604
|
}
|
|
605
|
+
|
|
606
|
+
@media (max-width: 600px) {
|
|
607
|
+
main:has(.hrd-card),
|
|
608
|
+
.tool-page:has(.hrd-card),
|
|
609
|
+
.section-tool:has(.hrd-card),
|
|
610
|
+
.tool-page:has(.hrd-card) .utility-header,
|
|
611
|
+
.tool-page:has(.hrd-card) .utility-header-title,
|
|
612
|
+
.tool-page:has(.hrd-card) .utility-header-base,
|
|
613
|
+
.tool-page:has(.hrd-card) .utility-header-highlight,
|
|
614
|
+
.tool-page:has(.hrd-card) .utility-header-description {
|
|
615
|
+
min-width: 0;
|
|
616
|
+
max-width: 100%;
|
|
617
|
+
overflow-wrap: anywhere;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
main:has(.hrd-card) {
|
|
621
|
+
overflow-x: hidden;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.tool-page:has(.hrd-card) .utility-header-title {
|
|
625
|
+
font-size: clamp(2rem, 12vw, 3rem);
|
|
626
|
+
letter-spacing: 0;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.hrd-card {
|
|
630
|
+
padding: 1rem;
|
|
631
|
+
border-radius: 1rem;
|
|
632
|
+
max-width: 100%;
|
|
633
|
+
min-width: 0;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
.hrd-setup-section,
|
|
637
|
+
.hrd-players-container,
|
|
638
|
+
.hrd-reveal-screen,
|
|
639
|
+
.hrd-card-container {
|
|
640
|
+
min-width: 0;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
.hrd-section-title,
|
|
644
|
+
.hrd-input-row,
|
|
645
|
+
.hrd-deal-action-panel {
|
|
646
|
+
align-items: stretch;
|
|
647
|
+
flex-direction: column;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.hrd-input,
|
|
651
|
+
.hrd-select,
|
|
652
|
+
.hrd-btn-primary,
|
|
653
|
+
.hrd-btn-secondary {
|
|
654
|
+
min-width: 0;
|
|
655
|
+
width: 100%;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
.hrd-wizard-container {
|
|
659
|
+
min-height: 360px;
|
|
660
|
+
padding: 2rem 0.5rem;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
.hrd-player-highlight,
|
|
664
|
+
.hrd-role-name,
|
|
665
|
+
.hrd-role-card.hrd-compact-card .hrd-role-name,
|
|
666
|
+
.hrd-epic-word {
|
|
667
|
+
font-size: clamp(1.5rem, 10vw, 2.25rem);
|
|
668
|
+
overflow-wrap: anywhere;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.hrd-hold-button-wrapper {
|
|
672
|
+
width: 170px;
|
|
673
|
+
height: 170px;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.hrd-hold-progress-ring {
|
|
677
|
+
width: 190px;
|
|
678
|
+
height: 190px;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
.hrd-role-card,
|
|
682
|
+
.hrd-role-card.hrd-compact-card {
|
|
683
|
+
padding: 1.5rem 1rem;
|
|
684
|
+
}
|
|
685
|
+
}
|
|
@@ -96,7 +96,7 @@ const ui: HiddenRoleDealerUI = {
|
|
|
96
96
|
teamImpostor: 'Imposteur',
|
|
97
97
|
teamCrewmate: 'Équipier',
|
|
98
98
|
impostorSharedSecretLabel: 'Information Secrète Partagée',
|
|
99
|
-
impostorSharedSecretPlaceholder: 'ex. Lieu
|
|
99
|
+
impostorSharedSecretPlaceholder: 'ex. Lieu: Restaurant, ou Mot: Pomme',
|
|
100
100
|
impostorModeLabel: 'Mode de Calcul des Imposteurs',
|
|
101
101
|
impostorModeFixed: 'Nombre Fixe',
|
|
102
102
|
impostorModePercentage: 'Pourcentage',
|
|
@@ -116,7 +116,7 @@ const ui: HiddenRoleDealerUI = {
|
|
|
116
116
|
impostorWriterDescHost: 'L\'hôte non-joueur utilise un mot aléatoire ou prédéfini.',
|
|
117
117
|
impostorWriterDescPreround: 'Le pré-tour permet à tous les joueurs d\'écrire des mots en secret, puis en choisit un au hasard.',
|
|
118
118
|
impostorWriterDescPlayer: 'Le joueur sélectionné écrit le mot et ne peut pas être imposteur.',
|
|
119
|
-
preroundPassTitle: 'Pré-tour
|
|
119
|
+
preroundPassTitle: 'Pré-tour: Passez l\'appareil à',
|
|
120
120
|
preroundInputPrompt: 'Écrivez secrètement un mot ou un lieu :',
|
|
121
121
|
preroundPassHint: 'Gardez le mot secret pour les autres joueurs !',
|
|
122
122
|
btnSubmitWord: 'Envoyer le Mot',
|
|
@@ -154,7 +154,7 @@ const howTo = [
|
|
|
154
154
|
|
|
155
155
|
export const content: ToolLocaleContent<HiddenRoleDealerUI> = {
|
|
156
156
|
slug: 'distributeur-roles-caches-secrets',
|
|
157
|
-
title: 'Distributeur de Rôles Cachés
|
|
157
|
+
title: 'Distributeur de Rôles Cachés: Attribution Secrète d\'Identités',
|
|
158
158
|
description: 'Distribuez les rôles secrets localement pour vos jeux de société comme Loup-Garou, Avalon, Secret Hitler ou Imposteur sans cartes physiques.',
|
|
159
159
|
ui,
|
|
160
160
|
seo: [
|
|
@@ -13,7 +13,7 @@ const ui: HiddenRoleDealerUI = {
|
|
|
13
13
|
presetCustom: 'Пользовательская игра',
|
|
14
14
|
dealRoles: 'Раздать тайные роли',
|
|
15
15
|
clearPlayers: 'Очистить список',
|
|
16
|
-
instructions: 'Введите имена игроков, настройте тайные роли и нажмите
|
|
16
|
+
instructions: 'Введите имена игроков, настройте тайные роли и нажмите "Раздать тайные роли".',
|
|
17
17
|
passTo: 'Передайте устройство',
|
|
18
18
|
holdToReveal: 'Удерживайте для просмотра',
|
|
19
19
|
releasingResets: 'Удерживайте нажатие для просмотра...',
|
|
@@ -13,7 +13,7 @@ const ui: HiddenRoleDealerUI = {
|
|
|
13
13
|
presetCustom: '自定义设置',
|
|
14
14
|
dealRoles: '分发秘密身份',
|
|
15
15
|
clearPlayers: '清空玩家',
|
|
16
|
-
instructions: '
|
|
16
|
+
instructions: '输入玩家名称,配置秘密身份,然后点击"分发秘密身份"。',
|
|
17
17
|
passTo: '将设备递给',
|
|
18
18
|
holdToReveal: '按住以显示',
|
|
19
19
|
releasingResets: '继续按住以显示...',
|
|
@@ -3,7 +3,7 @@ import type { InvestigationBoardLocaleContent } from '../entry';
|
|
|
3
3
|
|
|
4
4
|
export const content: InvestigationBoardLocaleContent = {
|
|
5
5
|
slug: "createur-de-tableau-de-conspiration",
|
|
6
|
-
title: "Créateur de Tableau de Conspiration
|
|
6
|
+
title: "Créateur de Tableau de Conspiration: Cartes d'Enquête RPG de Détective en Ligne",
|
|
7
7
|
description: "Concevez des tableaux de conspiration interactifs et des cartes d'enquête pour vos jeux de rôle. Connectez des personnages, indices et lieux avec des fils colorés.",
|
|
8
8
|
ui: {
|
|
9
9
|
"title": "Créateur de Tableau de Conspiration",
|
|
@@ -39,7 +39,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
39
39
|
"immersive": "Plein écran"
|
|
40
40
|
},
|
|
41
41
|
seo: [
|
|
42
|
-
{ type: 'title', text: "Créateur de Tableau de Conspiration en Ligne
|
|
42
|
+
{ type: 'title', text: "Créateur de Tableau de Conspiration en Ligne: Organisez les Indices de JdR", level: 2 },
|
|
43
43
|
{ type: 'paragraph', html: "Démêler un réseau complexe de mensonges, suivre les alibis des suspects et relier les indices d'une scène de crime peut rapidement submerger un groupe de jeu de rôle. Que vous meniez une campagne de L'Appel de Cthulhu, un mystère cyberpunk, une enquête policière dans D&D ou que vous écriviez un thriller, notre créateur de tableau de conspiration en ligne est l'outil ultime. Glissez, déposez, catégorisez et reliez les indices, les PNJ et les preuves matérielles sur un tableau de liège numérique infini. Utilisez des fils de relation colorés pour voir instantanément comment les suspects sont liés aux scènes de crime, aux alibis et aux motivations secrètes, éliminant les notes papier et gardant les joueurs immergés." },
|
|
44
44
|
{
|
|
45
45
|
type: 'stats',
|
|
@@ -107,7 +107,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
107
107
|
type: 'glossary',
|
|
108
108
|
items: [
|
|
109
109
|
{ term: "Nœud d'enquête", definition: "Toute carte sur le tableau représentant une personne, un lieu, un indice ou un objet." },
|
|
110
|
-
{ term: "Fil de relation", definition: "Une ligne colorée reliant deux cartes pour indiquer leur lien (ex
|
|
110
|
+
{ term: "Fil de relation", definition: "Une ligne colorée reliant deux cartes pour indiquer leur lien (ex: Suspect, Alibi, Propriétaire)." },
|
|
111
111
|
{ term: "Mode Immersif", definition: "Un affichage plein écran qui masque les menus de contrôle pour maximiser l'espace sur mobile ou tablette." },
|
|
112
112
|
{ term: "Chemin mis en valeur", definition: "Un chemin visuel affichant uniquement les nœuds et les lignes connectés à la carte sélectionnée, estompant le reste." }
|
|
113
113
|
]
|
|
@@ -137,7 +137,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
137
137
|
{
|
|
138
138
|
'@context': 'https://schema.org',
|
|
139
139
|
'@type': 'SoftwareApplication',
|
|
140
|
-
'name': "Créateur de Tableau de Conspiration
|
|
140
|
+
'name': "Créateur de Tableau de Conspiration: Cartes d'Enquête RPG de Détective en Ligne",
|
|
141
141
|
'operatingSystem': 'All',
|
|
142
142
|
'applicationCategory': 'UtilitiesApplication',
|
|
143
143
|
'browserRequirements': 'Requires HTML5 SVG support. Requires JavaScript.'
|
|
@@ -122,9 +122,9 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
122
122
|
}
|
|
123
123
|
],
|
|
124
124
|
faq: [
|
|
125
|
-
{ question: "Как добавить линии связи?", answer: "Нажмите
|
|
125
|
+
{ question: "Как добавить линии связи?", answer: "Нажмите Добавить связь на панели управления или выберите карточку, кликните на иконку ссылки (цепь) и выберите цель." },
|
|
126
126
|
{ question: "Можно ли перетаскивать карточки на телефоне?", answer: "Да, доска поддерживает сенсорные жесты для плавного перетаскивания и перемещения карточек на смартфонах и планшетах." },
|
|
127
|
-
{ question: "Можно ли использовать свои цвета карточек?", answer: "Да. Дважды кликните по карточке, выберите
|
|
127
|
+
{ question: "Можно ли использовать свои цвета карточек?", answer: "Да. Дважды кликните по карточке, выберите Особый в категории и настройте цвет выделения." },
|
|
128
128
|
{ question: "Сохраняет ли доска мою работу?", answer: "Да. Прогресс автоматически сохраняется в локальном хранилище вашего браузера под текущим именем доски." },
|
|
129
129
|
{ question: "Как масштабировать и перемещаться по доске?", answer: "Используйте жесты сжатия (pinch) для зума или колесо мыши. Перетаскивайте фон для перемещения по холсту." }
|
|
130
130
|
],
|
|
@@ -151,7 +151,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
151
151
|
'name': "Как добавить линии связи?",
|
|
152
152
|
'acceptedAnswer': {
|
|
153
153
|
'@type': 'Answer',
|
|
154
|
-
'text': "Нажмите
|
|
154
|
+
'text': "Нажмите Добавить связь на панели управления или выберите карточку, кликните на иконку ссылки (цепь) и выберите цель."
|
|
155
155
|
}
|
|
156
156
|
},
|
|
157
157
|
{
|
|
@@ -167,7 +167,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
167
167
|
'name': "Можно ли использовать свои цвета карточек?",
|
|
168
168
|
'acceptedAnswer': {
|
|
169
169
|
'@type': 'Answer',
|
|
170
|
-
'text': "Да. Дважды кликните по карточке, выберите
|
|
170
|
+
'text': "Да. Дважды кликните по карточке, выберите Особый в категории и настройте цвет выделения."
|
|
171
171
|
}
|
|
172
172
|
},
|
|
173
173
|
{
|
|
@@ -122,7 +122,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
122
122
|
}
|
|
123
123
|
],
|
|
124
124
|
faq: [
|
|
125
|
-
{ question: "如何添加连接线?", answer: "
|
|
125
|
+
{ question: "如何添加连接线?", answer: "点击控制面板中的'添加连接',或点击卡片上的链接图标,然后选择目标卡片。" },
|
|
126
126
|
{ question: "我可以在手机上拖动卡片吗?", answer: "可以,画板支持触摸手势,可在智能手机和平板电脑上流畅地拖动和移动卡片。" },
|
|
127
127
|
{ question: "我可以使用自定义的卡片颜色吗?", answer: "可以。双击卡片,在类别下选择 Custom,然后选择高亮颜色。" },
|
|
128
128
|
{ question: "画板会保存我的工作吗?", answer: "会。您的进度会自动保存在浏览器的本地存储中,保存在当前画板名称下。" },
|
|
@@ -151,7 +151,7 @@ export const content: InvestigationBoardLocaleContent = {
|
|
|
151
151
|
'name': "如何添加连接线?",
|
|
152
152
|
'acceptedAnswer': {
|
|
153
153
|
'@type': 'Answer',
|
|
154
|
-
'text': "
|
|
154
|
+
'text': "点击控制面板中的'添加连接',或点击卡片上的链接图标,然后选择目标卡片。"
|
|
155
155
|
}
|
|
156
156
|
},
|
|
157
157
|
{
|
|
@@ -792,8 +792,88 @@
|
|
|
792
792
|
}
|
|
793
793
|
|
|
794
794
|
@media (max-width: 768px) {
|
|
795
|
+
main:has(.investigation-board-main),
|
|
796
|
+
.tool-page:has(.investigation-board-main),
|
|
797
|
+
.section-tool:has(.investigation-board-main),
|
|
798
|
+
.tool-page:has(.investigation-board-main) .utility-header,
|
|
799
|
+
.tool-page:has(.investigation-board-main) .utility-header-title,
|
|
800
|
+
.tool-page:has(.investigation-board-main) .utility-header-base,
|
|
801
|
+
.tool-page:has(.investigation-board-main) .utility-header-highlight,
|
|
802
|
+
.tool-page:has(.investigation-board-main) .utility-header-description {
|
|
803
|
+
min-width: 0;
|
|
804
|
+
max-width: 100%;
|
|
805
|
+
overflow-wrap: anywhere;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
main:has(.investigation-board-main) {
|
|
809
|
+
overflow-x: hidden;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
.tool-page:has(.investigation-board-main) .utility-header-title {
|
|
813
|
+
font-size: clamp(2rem, 12vw, 3rem);
|
|
814
|
+
letter-spacing: 0;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
.investigation-board-main {
|
|
818
|
+
height: 520px;
|
|
819
|
+
min-height: 520px;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
.control-panel {
|
|
823
|
+
padding: 0.5rem;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
.board-management-row,
|
|
827
|
+
.search-filter-row,
|
|
828
|
+
.action-buttons-row,
|
|
829
|
+
.zoom-controls {
|
|
830
|
+
max-width: calc(100% - 1rem);
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
.board-management-row {
|
|
834
|
+
left: 0.5rem;
|
|
835
|
+
right: 0.5rem;
|
|
836
|
+
width: auto;
|
|
837
|
+
flex-wrap: wrap;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
.board-management-row select {
|
|
841
|
+
flex: 1 1 7rem;
|
|
842
|
+
width: auto;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
.search-filter-row {
|
|
846
|
+
top: 4.25rem;
|
|
847
|
+
right: 0.5rem;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.filter-group {
|
|
851
|
+
max-width: 155px;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
.action-buttons-row {
|
|
855
|
+
left: 0.5rem;
|
|
856
|
+
right: 0.5rem;
|
|
857
|
+
transform: none;
|
|
858
|
+
justify-content: center;
|
|
859
|
+
flex-wrap: wrap;
|
|
860
|
+
width: auto;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
.action-buttons-row .btn {
|
|
864
|
+
flex: 1 1 5.5rem;
|
|
865
|
+
padding: 0.3rem 0.45rem;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
.board-node {
|
|
869
|
+
width: min(220px, calc(100vw - 4rem));
|
|
870
|
+
padding: 0.75rem;
|
|
871
|
+
}
|
|
872
|
+
|
|
795
873
|
.zoom-controls {
|
|
796
874
|
bottom: 4.5rem;
|
|
797
|
-
|
|
875
|
+
left: 50%;
|
|
876
|
+
right: auto;
|
|
877
|
+
transform: translateX(-50%);
|
|
798
878
|
}
|
|
799
879
|
}
|
|
@@ -49,7 +49,7 @@ export const content: LunarTideLocaleContent = {
|
|
|
49
49
|
{ type: 'title', text: 'À quoi sert le champ Décalage de départ', level: 2 },
|
|
50
50
|
{ type: 'paragraph', html: 'Le <strong>Décalage de départ</strong> décale la phase initiale d\'une lune au jour 0 de campagne. Un décalage de 0 commence à la nouvelle lune. Un décalage égal à la moitié de la période orbitale commence à la pleine lune. Utilisez-le pour reproduire la phase décrite dans votre scène d\'ouverture ou pour que deux lunes ne commencent pas alignées.' },
|
|
51
51
|
{ type: 'title', text: 'Ce que le niveau de marée signifie pour votre partie', level: 2 },
|
|
52
|
-
{ type: 'paragraph', html: 'Le niveau de marée combine l\'attraction gravitationnelle de toutes les lunes actives selon leurs phases actuelles. Une <strong>vive-eau</strong> (au-dessus de 75%) se produit quand les lunes sont presque alignées. Une <strong>morte-eau</strong> (en dessous de 30%) survient quand les lunes sont en phases opposées. Liez cela à n\'importe quel système mécanique
|
|
52
|
+
{ type: 'paragraph', html: 'Le niveau de marée combine l\'attraction gravitationnelle de toutes les lunes actives selon leurs phases actuelles. Une <strong>vive-eau</strong> (au-dessus de 75%) se produit quand les lunes sont presque alignées. Une <strong>morte-eau</strong> (en dessous de 30%) survient quand les lunes sont en phases opposées. Liez cela à n\'importe quel système mécanique: bonus aux jets de sauvegarde, seuils de métamorphose lycanthropique ou sévérité des tempêtes.' },
|
|
53
53
|
{
|
|
54
54
|
type: 'comparative',
|
|
55
55
|
items: [
|
|
@@ -102,10 +102,10 @@ export const content: LunarTideLocaleContent = {
|
|
|
102
102
|
{
|
|
103
103
|
type: 'diagnostic',
|
|
104
104
|
variant: 'info',
|
|
105
|
-
title: 'Conseil
|
|
105
|
+
title: 'Conseil: Configurer une phase précise pour la session 1',
|
|
106
106
|
icon: 'mdi:information-outline',
|
|
107
107
|
badge: 'CONSEIL DE CONFIGURATION',
|
|
108
|
-
html: 'Si votre campagne commence sous un croissant de lune, réglez le décalage à environ 20% de la période orbitale. Pour une pleine lune, utilisez 50% de la période comme décalage. Exemple
|
|
108
|
+
html: 'Si votre campagne commence sous un croissant de lune, réglez le décalage à environ 20% de la période orbitale. Pour une pleine lune, utilisez 50% de la période comme décalage. Exemple: lune de 28 jours débutant pleine, décalage 14. Avancez le compteur au jour actuel de campagne et la prévision affichera automatiquement les 10 prochains jours.'
|
|
109
109
|
}
|
|
110
110
|
],
|
|
111
111
|
faq: [
|
|
@@ -116,7 +116,7 @@ export const content: LunarTideLocaleContent = {
|
|
|
116
116
|
{ question: 'Puis-je l\'utiliser pour L\'Appel de Cthulhu ou des campagnes d\'horreur ?', answer: 'Oui. Utilisez une lune de 29 jours et réglez le décalage pour que la pleine lune tombe sur le climax de la session. Le suivi de marée peut représenter l\'influence du Mythe ou des pics de sensibilité psychique.' },
|
|
117
117
|
{ question: 'Comment fonctionne la prévision sur 10 jours ?', answer: 'La prévision affiche la phase lunaire de chaque lune active sous forme de point coloré pour chacun des 10 prochains jours de campagne. Le pourcentage indiqué est le niveau de marée combiné. Les jours avec des valeurs élevées sont de bons candidats pour des rencontres dramatiques.' },
|
|
118
118
|
{ question: 'Puis-je suivre une lune avec un cycle très court, comme 7 jours ?', answer: 'Oui. Réglez la période orbitale sur 7. La lune accomplira un cycle complet chaque semaine de temps de jeu. Utile pour les mondes où la magie lunaire se réinitialise chaque semaine.' },
|
|
119
|
-
{ question: 'Comment reproduire la phase lunaire d\'un module d\'aventure publié ?', answer: 'Notez la phase décrite et comptez combien de jours du cycle cela représente. Divisez par la période orbitale et utilisez ce résultat comme décalage. Exemple
|
|
119
|
+
{ question: 'Comment reproduire la phase lunaire d\'un module d\'aventure publié ?', answer: 'Notez la phase décrite et comptez combien de jours du cycle cela représente. Divisez par la période orbitale et utilisez ce résultat comme décalage. Exemple: premier quartier au jour 0 d\'un cycle de 28 jours signifie un décalage de 7.' }
|
|
120
120
|
],
|
|
121
121
|
bibliography,
|
|
122
122
|
howTo: [
|