You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: app/js/i18n/en.js
+9-1Lines changed: 9 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -355,7 +355,15 @@ var LangEN = {
355
355
narrator_label: 'Battle Narrator',
356
356
narrator_toggle: 'Battle Narrator',
357
357
narrator_test: 'Test narrator',
358
-
narrator_test_message: 'Battle Narrator is online. If your screen reader is enabled, it should read this message.',
358
+
narrator_test_message: 'Battle Narrator is online. This is the selected voice for hunts and duels.',
359
+
narrator_voice_gender: 'Narrator voice',
360
+
narrator_voice_male: 'Male',
361
+
narrator_voice_female: 'Female',
362
+
narrator_voice_timbre: 'Narrator timbre',
363
+
narrator_timbre_rough: 'Rough and low',
364
+
narrator_timbre_neutral: 'Neutral',
365
+
narrator_timbre_soft: 'Soft',
366
+
narrator_voice_hint: 'Default is a low male voice. Available voices depend on the browser and system; if the exact voice is missing, the game still adjusts pitch and speech rate.',
359
367
narrator_pve_attack: 'You used {spell}. {creature} takes {damage} damage.',
360
368
narrator_critical: 'Critical hit!',
361
369
narrator_hunt_victory: 'Victory! {creature} defeated. {xp} XP gained.',
Copy file name to clipboardExpand all lines: app/js/i18n/ru.js
+9-1Lines changed: 9 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -355,7 +355,15 @@ var LangRU = {
355
355
narrator_label: 'Боевой Рассказчик',
356
356
narrator_toggle: 'Боевой Рассказчик',
357
357
narrator_test: 'Проверить рассказчика',
358
-
narrator_test_message: 'Боевой рассказчик на связи. Если включён экранный диктор, он должен прочитать это сообщение.',
358
+
narrator_test_message: 'Боевой рассказчик на связи. Сейчас прозвучит выбранный голос для охоты и дуэлей.',
359
+
narrator_voice_gender: 'Голос рассказчика',
360
+
narrator_voice_male: 'Мужской',
361
+
narrator_voice_female: 'Женский',
362
+
narrator_voice_timbre: 'Тембр рассказчика',
363
+
narrator_timbre_rough: 'Хриплый и низкий',
364
+
narrator_timbre_neutral: 'Нейтральный',
365
+
narrator_timbre_soft: 'Мягкий',
366
+
narrator_voice_hint: 'По умолчанию выбран мужской низкий голос. Доступные голоса зависят от браузера и системы; если нужного голоса нет, игра всё равно меняет высоту и темп речи.',
359
367
narrator_pve_attack: 'Ты использовал {spell}. {creature} получает {damage} урона.',
Copy file name to clipboardExpand all lines: tests/player-bug-regressions.test.js
+20-5Lines changed: 20 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -345,7 +345,7 @@ test('high-traffic UI narration, screen announcements, and inventory stat labels
345
345
346
346
test('service worker updates quickly and keeps navigations network-first',function(){
347
347
constswJs=read('app/sw.js');
348
-
assert.ok(/viz-magic-v49/.test(swJs),'service worker cache version should be bumped');
348
+
assert.ok(/viz-magic-v50/.test(swJs),'service worker cache version should be bumped');
349
349
assert.ok(/self\.skipWaiting\(\)/.test(swJs),'service worker should activate new cache without waiting for all tabs to close');
350
350
assert.ok(/self\.clients\.claim\(\)/.test(swJs),'service worker should claim clients after activation');
351
351
assert.ok(/event\.request\.mode==='navigate'[\s\S]*fetch\(event\.request\)/.test(swJs),'navigation requests should prefer network to avoid stale cached index');
assert.ok(/SoundManager\.setVolume\(sfxVolume\/100\)/.test(read('app/js/ui/screens/settings.js')),'settings should apply stored SFX volume on render');
395
395
assert.ok(/localStorage\.setItem\(STORAGE_PREFIX\+'sfx_volume'/.test(read('app/js/ui/sound.js')),'sound manager should persist SFX volume');
396
396
assert.ok(/varvolume=_getStoredNumber\('sfx_volume',0\.5\)/.test(read('app/js/ui/sound.js')),'sound manager should restore persisted SFX volume');
397
-
assert.ok(/viz-magic-v49/.test(read('app/sw.js')),'service worker cache should be bumped for UI changes');
397
+
assert.ok(/viz-magic-v50/.test(read('app/sw.js')),'service worker cache should be bumped for UI changes');
398
398
});
399
399
400
400
@@ -456,8 +456,8 @@ test('magical weather is labelled and affects hunts', function () {
456
456
assert.ok(/forecast-card-effect/.test(homeJs+mainCss),'forecast effect column needs its own thematic icon/card');
457
457
assert.ok(/functiongetCurrentFestival/.test(worldEventsJs),'magical holidays should sometimes appear in the forecast');
458
458
assert.ok(/festival_today_prefix/.test(homeJs+ruJs+enJs),'forecast holidays should have localized copy');
459
-
assert.ok(/i18n\/ru.js\?v=20260713b/.test(indexHtml),'Russian weather copy must be cache-busted');
460
-
assert.ok(/i18n\/en.js\?v=20260713b/.test(indexHtml),'English weather copy must be cache-busted');
459
+
assert.ok(/i18n\/ru.js\?v=20260713c/.test(indexHtml),'Russian weather copy must be cache-busted');
460
+
assert.ok(/i18n\/en.js\?v=20260713c/.test(indexHtml),'English weather copy must be cache-busted');
461
461
assert.ok(/home.js\?v=20260713a/.test(indexHtml),'home forecast layout must be cache-busted');
462
462
assert.ok(/quests.js\?v=20260712a/.test(indexHtml),'quest-limit UX must be cache-busted');
463
463
assert.ok(/nav.js\?v=20260712b/.test(indexHtml),'bottom tray nav must be cache-busted');
@@ -524,7 +524,7 @@ test('reported mobile UX issues have explicit fixes', function () {
524
524
525
525
test('PWA icon and HP heart use expressive color accents',function(){
526
526
assert.ok(/viz-magic-192\.png\?v=20260713a/.test(indexHtml),'PWA icon link should be cache-busted after plus placement/color update');
527
-
assert.ok(/viz-magic-v49/.test(read('app/manifest.json')),'manifest start URL should change so launchers can refresh icons');
527
+
assert.ok(/viz-magic-v50/.test(read('app/manifest.json')),'manifest start URL should change so launchers can refresh icons');
528
528
assert.ok(/label:'❤️HP'/.test(homeJs),'HP label should use a red heart emoji variant');
529
529
});
530
530
@@ -551,6 +551,21 @@ test('hunt screen exposes explicit camp rest promised by Help', function () {
551
551
assert.ok(/Отдыхукостра/.test(ruJs)&&/нажми«Отдыхукостра»/.test(ruJs),'Russian Help should name the visible rest button');
552
552
});
553
553
554
+
555
+
test('narrator voice preferences support gender and timbre',function(){
0 commit comments