Skip to content

Commit 5598501

Browse files
author
web3blind
committed
Improve hunt crafting voice and bazaar affordances
1 parent 0e5d0fb commit 5598501

11 files changed

Lines changed: 81 additions & 34 deletions

File tree

app/index.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@
120120
<script src="js/config.js?v=20260712a"></script>
121121

122122
<!-- I18n -->
123-
<script src="js/i18n/ru.js?v=20260713e"></script>
124-
<script src="js/i18n/en.js?v=20260713e"></script>
123+
<script src="js/i18n/ru.js?v=20260713f"></script>
124+
<script src="js/i18n/en.js?v=20260713f"></script>
125125

126126
<!-- Utilities -->
127127
<script src="js/utils/helpers.js?v=20260621l"></script>
@@ -180,27 +180,27 @@
180180
<script src="js/ui/components/toast.js?v=20260711b"></script>
181181
<script src="js/ui/components/modal.js"></script>
182182
<script src="js/ui/components/nav.js?v=20260713a"></script>
183-
<script src="js/ui/components/battle-narrator.js?v=20260713a"></script>
183+
<script src="js/ui/components/battle-narrator.js?v=20260713b"></script>
184184

185185
<!-- UI Screens -->
186186
<script src="js/ui/screens/landing.js"></script>
187187
<script src="js/ui/screens/login.js?v=20260711a"></script>
188188
<script src="js/ui/screens/onboarding.js"></script>
189189
<script src="js/ui/screens/home.js?v=20260713d"></script>
190190
<script src="js/ui/screens/character.js?v=20260713b"></script>
191-
<script src="js/ui/screens/hunt.js?v=20260713c"></script>
191+
<script src="js/ui/screens/hunt.js?v=20260713d"></script>
192192
<script src="js/ui/screens/inventory.js?v=20260621l"></script>
193193
<script src="js/ui/screens/chronicle.js?v=20260712a"></script>
194194
<script src="js/ui/screens/duel.js"></script>
195195
<script src="js/ui/screens/arena.js?v=20260621d"></script>
196196
<script src="js/ui/screens/guild.js?v=20260621l"></script>
197197
<script src="js/ui/screens/map.js?v=20260621h"></script>
198-
<script src="js/ui/screens/marketplace.js?v=20260713a"></script>
199-
<script src="js/ui/screens/crafting.js?v=20260621j"></script>
198+
<script src="js/ui/screens/marketplace.js?v=20260713b"></script>
199+
<script src="js/ui/screens/crafting.js?v=20260713a"></script>
200200
<script src="js/ui/screens/quests.js?v=20260712a"></script>
201201
<script src="js/ui/screens/world-boss.js"></script>
202-
<script src="js/ui/screens/settings.js?v=20260713a"></script>
203-
<script src="js/ui/screens/help.js?v=20260712a"></script>
202+
<script src="js/ui/screens/settings.js?v=20260713b"></script>
203+
<script src="js/ui/screens/help.js?v=20260713a"></script>
204204
<script src="js/ui/screens/leaderboard.js?v=20260712c"></script>
205205
<script src="js/ui/screens/temple.js?v=20260713a"></script>
206206

app/js/i18n/en.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,13 +357,13 @@ var LangEN = {
357357
narrator_test: 'Test narrator',
358358
narrator_test_message: 'Battle Narrator is online. This is the selected voice for hunts and duels.',
359359
narrator_voice_gender: 'Narrator voice',
360-
narrator_voice_male: 'Male',
360+
narrator_voice_male: 'Low / male if available',
361361
narrator_voice_female: 'Female',
362362
narrator_voice_timbre: 'Narrator timbre',
363-
narrator_timbre_rough: 'Rough and low',
363+
narrator_timbre_rough: 'Low, without heavy distortion',
364364
narrator_timbre_neutral: 'Neutral',
365365
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.',
366+
narrator_voice_hint: 'Female usually sounds more natural. A true low male voice depends on browser/system voices; if none is available, the game only slightly lowers pitch and rate to avoid a distorted female voice.',
367367
narrator_pve_attack: 'You used {spell}. {creature} takes {damage} damage.',
368368
narrator_critical: 'Critical hit!',
369369
narrator_hunt_victory: 'Victory! {creature} defeated. {xp} XP gained.',

app/js/i18n/ru.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,13 +357,13 @@ var LangRU = {
357357
narrator_test: 'Проверить рассказчика',
358358
narrator_test_message: 'Боевой рассказчик на связи. Сейчас прозвучит выбранный голос для охоты и дуэлей.',
359359
narrator_voice_gender: 'Голос рассказчика',
360-
narrator_voice_male: 'Мужской',
360+
narrator_voice_male: 'Низкий / мужской, если доступен',
361361
narrator_voice_female: 'Женский',
362362
narrator_voice_timbre: 'Тембр рассказчика',
363-
narrator_timbre_rough: 'Хриплый и низкий',
363+
narrator_timbre_rough: 'Низкий, без сильного искажения',
364364
narrator_timbre_neutral: 'Нейтральный',
365365
narrator_timbre_soft: 'Мягкий',
366-
narrator_voice_hint: 'По умолчанию выбран мужской низкий голос. Доступные голоса зависят от браузера и системы; если нужного голоса нет, игра всё равно меняет высоту и темп речи.',
366+
narrator_voice_hint: 'Женский голос обычно звучит естественнее. Низкий мужской зависит от системных голосов браузера; если настоящего мужского голоса нет, игра лишь слегка снижает высоту и темп, чтобы не превращать речь в искажённый женский голос.',
367367
narrator_pve_attack: 'Ты использовал {spell}. {creature} получает {damage} урона.',
368368
narrator_critical: 'Критический удар!',
369369
narrator_hunt_victory: 'Победа! {creature} повержен. Получено {xp} опыта.',

app/js/ui/components/battle-narrator.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ var BattleNarrator = (function() {
135135
var voice = _selectVoice(lang);
136136
utterance.lang = lang;
137137
if (voice) utterance.voice = voice;
138-
utterance.rate = (voiceTimbre === 'rough') ? 0.88 : (voiceTimbre === 'soft' ? 0.96 : 1);
139-
utterance.pitch = (voiceGender === 'male') ? (voiceTimbre === 'rough' ? 0.65 : 0.82) : (voiceTimbre === 'rough' ? 0.9 : 1.08);
138+
utterance.rate = (voiceTimbre === 'rough') ? 0.92 : (voiceTimbre === 'soft' ? 0.98 : 1);
139+
utterance.pitch = (voiceGender === 'male') ? (voiceTimbre === 'rough' ? 0.84 : 0.9) : (voiceTimbre === 'rough' ? 0.96 : 1.08);
140140
utterance.volume = 1;
141141
window.speechSynthesis.cancel();
142142
window.speechSynthesis.speak(utterance);

app/js/ui/screens/crafting.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ var CraftingScreen = (function() {
257257
return html;
258258
}
259259

260+
html += '<button class="btn btn-secondary btn-sm craft-tab-back-btn" aria-label="' + t('craft_back') + '">' + t('craft_back') + '</button>';
261+
260262
// Enchantable items (equipped or in bag, with slots available)
261263
html += '<h2>' + t('enchant_title') + '</h2>';
262264
html += '<p class="enchant-desc">' + t('enchant_desc') + '</p>';

app/js/ui/screens/help.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var HelpScreen = (function() {
1313
{ key: 'mana', icon: '\u2728' },
1414
{ key: 'hp', icon: '\u2764\uFE0F' },
1515
{ key: 'quests', icon: '\uD83D\uDCDC' },
16-
{ key: 'hunt', icon: '\u2694\uFE0F' },
16+
{ key: 'hunt', icon: '\uD83C\uDFF9' },
1717
{ key: 'armageddon', icon: '\u26A0\uFE0F' },
1818
{ key: 'crafting', icon: '\uD83D\uDD28' },
1919
{ key: 'marketplace', icon: '\uD83C\uDFEA' },

app/js/ui/screens/hunt.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ var HuntScreen = (function() {
4444
(needsRest ? t('hunt_rest_button') : t('hunt_rest_full')) +
4545
'</button>' +
4646
'</section>' +
47-
'<h2>' + t('hunt_choose_creature') + '</h2>';
47+
'<h2>🐾 ' + t('hunt_choose_creature') + '</h2>';
4848

4949
if (!creatures.length) {
5050
html += '<div class="creature-list" role="status" aria-live="polite">' +
@@ -68,7 +68,7 @@ var HuntScreen = (function() {
6868
html += '</div>';
6969
}
7070

71-
html += '<h2>' + t('hunt_choose_spell') + '</h2>' +
71+
html += '<h2>🪄 ' + t('hunt_choose_spell') + '</h2>' +
7272
'<div class="spell-grid" role="radiogroup" aria-label="' + t('hunt_choose_spell') + '">';
7373

7474
for (var j = 0; j < spells.length; j++) {

app/js/ui/screens/marketplace.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ var MarketplaceScreen = (function() {
219219
var sRarity = ItemSystem.getRarityInfo(sItem.rarity);
220220
var itemIds = group.items.map(function(it) { return it.id; }).join(',');
221221
html += '<div class="market-sell-item ' + Helpers.rarityClass(sItem.rarity) + '" role="listitem" data-item="' + sItem.id + '">';
222-
html += '<span class="sell-item-name rarity-color-' + sRarity.name + '">' + sRarity.symbol + ' ' + Helpers.escapeHtml(sName) +
222+
html += '<span class="sell-item-name rarity-color-' + sRarity.name + '">' + _marketItemIcon(sItem) + ' ' + sRarity.symbol + ' ' + Helpers.escapeHtml(sName) +
223223
(group.items.length > 1 ? ' <span class="sell-item-count">×' + group.items.length + '</span>' : '') + '</span>';
224224
html += '<div class="sell-item-controls">';
225225
html += '<label for="price-' + sItem.id + '" class="sr-only">' + t('market_set_price') + '</label>';
@@ -519,6 +519,27 @@ var MarketplaceScreen = (function() {
519519
return true;
520520
}
521521

522+
function _marketItemIcon(item) {
523+
if (!item) return '✦';
524+
var byType = {
525+
chronicle_ink: '🖋️',
526+
flame_votive_mark: '🔥',
527+
labor_votive_mark: '🔨',
528+
health_scroll: '📜',
529+
mana_potion: '⚡',
530+
fire_dust: '✦',
531+
sparkdust: '✨',
532+
shadow_shard: '◈'
533+
};
534+
if (byType[item.type]) return byType[item.type];
535+
var template = ItemSystem.getItemTemplate(item.type);
536+
if (template && template.category === 'material') return '✦';
537+
if (template && template.category === 'scroll') return '📜';
538+
if (template && template.category === 'focus') return '🪄';
539+
if (template && template.category === 'ward') return '🛡️';
540+
return '✦';
541+
}
542+
522543
function _groupSellableItems(items) {
523544
var byKey = {};
524545
var groups = [];

app/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"short_name": "VizMagic",
44
"description": "Viz Magic — accessible browser RPG on the VIZ blockchain",
55
"id": "https://vizmagic.web3blind.xyz/",
6-
"start_url": "/?pwa=viz-magic-v53",
6+
"start_url": "/?pwa=viz-magic-v54",
77
"scope": "/",
88
"display": "standalone",
99
"display_override": ["standalone", "minimal-ui"],

app/sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Viz Magic — Service Worker
2-
var CACHE_NAME = 'viz-magic-v53';
2+
var CACHE_NAME = 'viz-magic-v54';
33
var ASSETS = [
44
'/',
55
'/index.html',

0 commit comments

Comments
 (0)