0.2.3: prepare follow-up fixes and client features (#407, #408, #410, #413, #431, #435, #436, #440, #444)
Add special-target activation without bypassing attack cadence, cooperative card preferences and emotes, skill sound banks, per-operator voice choices, text sizing, install prompts, closed-tab recovery and unanimous setup rerolls. Retain late deployment elapsed time and resolve echo/counter pulses without recursive hook overflow. Independent final review remains pending. Golden: roster-016, roster-035, roster-036, roster-045; boss-boss_1-pair, boss-boss_3-pair, boss-boss_5-pair, boss-boss_7-pair, hidden-boss_9-pair; solo-HARD-9-boosted: Lemuen attack cadence. diy-132: Necras extra activation targets. coop2-NORMAL-14-standins: cooperative purchase preference and simulation fixes. hidden-boss_10-solo: echo pulse FIFO resolution. See DESIGN 28.13-28.24 for assumptions, sources and contributor credit.
This commit is contained in:
1 parent
314564c139
commit
f3658a0dd4
104 files changed
+3674
-741
No files matched your search
@@ -0,0 +1,14 @@
|
||||
// Browser-local dub preferences. Every variant of an operator shares its charId; absent entries follow the global dub.
|
||||
export const VOICE_LANGS = Object.freeze(['cn', 'jp']);
|
||||
export function sanitizeVoiceOverrides(raw) {
|
||||
const out = {};
|
||||
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return out;
|
||||
for (const [id, lang] of Object.entries(raw).slice(0, 512)) {
|
||||
if (/^char_[0-9]+_[a-z0-9]+$/.test(id) && id.length <= 80 && VOICE_LANGS.includes(lang)) out[id] = lang;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
export function voiceLangFor(charId, globalLang, overrides) {
|
||||
const own = Object.hasOwn(overrides || {}, charId) ? overrides[charId] : null;
|
||||
return VOICE_LANGS.includes(own) ? own : globalLang === 'jp' ? 'jp' : 'cn';
|
||||
}
|
||||
Reference in new issue
Block a user