@ -1,5 +1,6 @@
import type { Locale } from './localeCodes' ;
import type { Locale } from './localeCodes' ;
import { enemyTypeLabel } from './loadLocales' ;
import { enemyTypeLabel } from './loadLocales' ;
import { npcByIdKeyLabel } from './npcGeneratedNames' ;
/** Stable keys aligned with backend migrations / model constants. */
/** Stable keys aligned with backend migrations / model constants. */
export const WANDERING_MERCHANT_NPC_KEY = 'npc.wandering_merchant.v1' ;
export const WANDERING_MERCHANT_NPC_KEY = 'npc.wandering_merchant.v1' ;
@ -40,6 +41,7 @@ export const TOWN_ID_TO_NAME_KEY: Record<number, string> = {
29 : 'town.sungrasp.v1' ,
29 : 'town.sungrasp.v1' ,
30 : 'town.glimmerford.v1' ,
30 : 'town.glimmerford.v1' ,
31 : 'town.starveil.v1' ,
31 : 'town.starveil.v1' ,
32 : 'town.capital.v1' ,
} ;
} ;
/** Localized town label from numeric `towns.id` (visit_town quest target, etc.). */
/** Localized town label from numeric `towns.id` (visit_town quest target, etc.). */
@ -86,100 +88,129 @@ const TOWNS: Record<string, Bilingual> = {
'town.sungrasp.v1' : { en : 'Sungrasp' , ru : 'Санграсп' } ,
'town.sungrasp.v1' : { en : 'Sungrasp' , ru : 'Санграсп' } ,
'town.glimmerford.v1' : { en : 'Glimmerford' , ru : 'Глиммерфорд' } ,
'town.glimmerford.v1' : { en : 'Glimmerford' , ru : 'Глиммерфорд' } ,
'town.starveil.v1' : { en : 'Starveil' , ru : 'Старвейл' } ,
'town.starveil.v1' : { en : 'Starveil' , ru : 'Старвейл' } ,
'town.capital.v1' : { en : 'Capital' , ru : 'Столица' } ,
} ;
} ;
const NPCS : Record < string , Bilingual > = {
const NPCS : Record < string , Bilingual > = {
'npc.elder_maren.v1' : { en : 'Elder Maren' , ru : 'Старейшина Марен' } ,
'npc.elder_maren.v1' : { en : 'Maren Thistlewood' , ru : 'Марен Тистлвуд' } ,
'npc.peddler_finn.v1' : { en : 'Peddler Finn' , ru : 'Бродячий торговец Финн' } ,
'npc.peddler_finn.v1' : { en : 'Finn Marlow' , ru : 'Финн Марлоу' } ,
'npc.sister_asha.v1' : { en : 'Sister Asha' , ru : 'Сестра Аша' } ,
'npc.sister_asha.v1' : { en : 'Asha Kentwell' , ru : 'Аша Кентвелл' } ,
'npc.guard_halric.v1' : { en : 'Guard Halric' , ru : 'Страж Халрик' } ,
'npc.guard_halric.v1' : { en : 'Halric Morrow' , ru : 'Халрик М о р р о у ' } ,
'npc.trader_wynn.v1' : { en : 'Trader Wynn' , ru : 'Торговец Винн' } ,
'npc.trader_wynn.v1' : { en : 'Wynn Cartwright' , ru : 'Винн Картрайт' } ,
'npc.scholar_orin.v1' : { en : 'Scholar Orin' , ru : 'Учёный Орин' } ,
'npc.scholar_orin.v1' : { en : 'Orin Aldgate' , ru : 'Орин Олдгейт' } ,
'npc.bone_merchant.v1' : { en : 'Bone Merchant' , ru : 'Торговец костями' } ,
'npc.bone_merchant.v1' : { en : 'Osbert Waynwood' , ru : 'Осберт Вейнвуд' } ,
'npc.priestess_liora.v1' : { en : 'Priestess Liora' , ru : 'Жрица Лиора' } ,
'npc.priestess_liora.v1' : { en : 'Liora Selwyn' , ru : 'Лиора Селвин' } ,
[ WANDERING_MERCHANT_NPC_KEY ] : { en : 'Wandering Merchant' , ru : 'Бродячий торговец' } ,
'npc.brandric_thacker.v1' : { en : 'Brandric Thacker' , ru : 'Брандрик Тэкер' } ,
'npc.clerk_sera.v1' : { en : 'Clerk Sera' , ru : 'Клер С е р а ' } ,
'npc.conrad_pitwright.v1' : { en : 'Conrad Pitwright' , ru : 'Конрад Питрайт' } ,
'npc.notary_bram.v1' : { en : 'Notary Bram' , ru : 'Нотариус Брам' } ,
'npc.nessa_bramble.v1' : { en : 'Nessa Bramble' , ru : 'Н е с с а Брамбл' } ,
'npc.copper_nils.v1' : { en : 'Copper Nils' , ru : 'Коппер Нилс' } ,
'npc.torin_marshwick.v1' : { en : 'Torin Marshwick' , ru : 'Торин Маршвик' } ,
'npc.tin_mara.v1' : { en : 'Tin Mara' , ru : 'Тин М а р а ' } ,
'npc.renulf_broadmere.v1' : { en : 'Renulf Broadmere' , ru : 'Ренульф Бродмир' } ,
'npc.sister_calm.v1' : { en : 'Sister Calm' , ru : 'Сестра Калм' } ,
'npc.kael_ironwright.v1' : { en : 'Kael Ironwright' , ru : 'Кейл Айронрайт' } ,
'npc.foreman_rook.v1' : { en : 'Foreman Rook' , ru : 'Форман Рук' } ,
'npc.edmund_cinderwell.v1' : { en : 'Edmund Cinderwell' , ru : 'Эдмунд Синдервелл' } ,
'npc.wire_merchant.v1' : { en : 'Wire Merchant' , ru : 'Торговец проволокой' } ,
'npc.aelith_northgate.v1' : { en : 'Aelith Northgate' , ru : 'Аэлит Нортгейт' } ,
'npc.bolt_jada.v1' : { en : 'Bolt Jada' , ru : 'Болт Джада' } ,
'npc.dorian_hawke.v1' : { en : 'Dorian Hawke' , ru : 'Дориан Хоук' } ,
'npc.sage_mottle.v1' : { en : 'Sage Mottle' , ru : 'Сейдж Моттл' } ,
'npc.mariel_starling.v1' : { en : 'Mariel Starling' , ru : 'Мариэль Старлинг' } ,
'npc.warden_pike.v1' : { en : 'Warden Pike' , ru : 'Варден Пайк' } ,
'npc.milo_ropewalk.v1' : { en : 'Milo Ropewalk' , ru : 'Мило Роупуок' } ,
'npc.ash_vendor.v1' : { en : 'Ash Vendor' , ru : 'Торговец золой' } ,
'npc.lissa_harcourt.v1' : { en : 'Lissa Harcourt' , ru : 'Лисса Харкорт' } ,
'npc.scrap_yori.v1' : { en : 'Scrap Yori' , ru : 'Скрап Йори' } ,
'npc.jasper_kindling.v1' : { en : 'Jasper Kindling' , ru : 'Джаспер Киндлинг' } ,
'npc.herb_rill.v1' : { en : 'Herb Rill' , ru : 'Х е р б Рилл' } ,
'npc.kess_wiley.v1' : { en : 'Kess Wiley' , ru : 'К е с с Уайли' } ,
'npc.miller_tove.v1' : { en : 'Miller Tove' , ru : 'Миллер Тов' } ,
'npc.aldwin_relicton.v1' : { en : 'Aldwin Relicton' , ru : 'Олдвин Реликтон' } ,
'npc.grain_peddler.v1' : { en : 'Grain Peddler' , ru : 'Зерновой бродяга' } ,
'npc.torvik_grimstad.v1' : { en : 'Torvik Grimstad' , ru : 'Торвик Гримстад' } ,
'npc.sack_ren.v1' : { en : 'Sack Ren' , ru : 'Сак Рен' } ,
'npc.morna_fenwick.v1' : { en : 'Morna Fenwick' , ru : 'Морна Фенвик' } ,
'npc.brother_salve.v1' : { en : 'Brother Salve' , ru : 'Брат Сальв' } ,
'npc.morah_ellis.v1' : { en : 'Morah Ellis' , ru : 'М о р а Эллис' } ,
'npc.stone_judge.v1' : { en : 'Stone Judge' , ru : 'Каменный судья' } ,
[ WANDERING_MERCHANT_NPC_KEY ] : { en : 'Gillen Porter' , ru : 'Гиллен Портер' } ,
'npc.edge_trader.v1' : { en : 'Edge Trader' , ru : 'Торговец с краю' } ,
'npc.clerk_sera.v1' : { en : 'Sera Whitcomb' , ru : 'С е р а Уиткомб' } ,
'npc.crack_merchant.v1' : { en : 'Crack Merchant' , ru : 'Торговец из трещины' } ,
'npc.notary_bram.v1' : { en : 'Bram Ashcombe' , ru : 'Брам Эшкомб' } ,
'npc.sister_flint.v1' : { en : 'Sister Flint' , ru : 'Сестра Флинт' } ,
'npc.copper_nils.v1' : { en : 'Nils Copperton' , ru : 'Нилс Коппертон' } ,
'npc.starward_oren.v1' : { en : 'Starward Oren' , ru : 'Старворд Орен' } ,
'npc.tin_mara.v1' : { en : 'Mara Tinwell' , ru : 'М а р а Тинвелл' } ,
'npc.spire_imports.v1' : { en : 'Spire Imports' , ru : 'Спайр Импортс' } ,
'npc.sister_calm.v1' : { en : 'Agnes Stillwater' , ru : 'Агнес Стилуотер' } ,
'npc.comet_outfitter.v1' : { en : 'Comet Outfitter' , ru : 'Комет Аутфиттер' } ,
'npc.foreman_rook.v1' : { en : 'Rodrick Cantrell' , ru : 'Родрик Кантрелл' } ,
'npc.void_medic.v1' : { en : 'Void Medic' , ru : 'Медик пустоты' } ,
'npc.wire_merchant.v1' : { en : 'Wulfric Strand' , ru : 'Вульфрик Стрэнд' } ,
'npc.brine_archivist.v1' : { en : 'Brine Archivist' , ru : 'Архивариус рассола' } ,
'npc.bolt_jada.v1' : { en : 'Jada Boltwright' , ru : 'Джада Болтрайт' } ,
'npc.salt_broker.v1' : { en : 'Salt Broker' , ru : 'Солёный брокер' } ,
'npc.sage_mottle.v1' : { en : 'Alaric Motlow' , ru : 'Аларик Мотлоу' } ,
'npc.reed_trader.v1' : { en : 'Reed Trader' , ru : 'Торговец тростником' } ,
'npc.warden_pike.v1' : { en : 'Percival Pike' , ru : 'Персиваль Пайк' } ,
'npc.mud_healer.v1' : { en : 'Mud Healer' , ru : 'Грязевой лекарь' } ,
'npc.ash_vendor.v1' : { en : 'Eadric Ashenford' , ru : 'Эадрик Эшенфорд' } ,
'npc.post_warden.v1' : { en : 'Post Warden' , ru : 'Страж поста' } ,
'npc.scrap_yori.v1' : { en : 'Yoric Scarn' , ru : 'Йорик Скарн' } ,
'npc.ironmonger.v1' : { en : 'Ironmonger' , ru : 'Железный торговец' } ,
'npc.herb_rill.v1' : { en : 'Rillian Hereward' , ru : 'Риллиан Херуорд' } ,
'npc.rivet_seller.v1' : { en : 'Rivet Seller' , ru : 'Продавец заклёпок' } ,
'npc.miller_tove.v1' : { en : 'Tove Millerson' , ru : 'Тове Миллерсон' } ,
'npc.forge_medic.v1' : { en : 'Forge Medic' , ru : 'Кузнечный медик' } ,
'npc.grain_peddler.v1' : { en : 'Gareth Grantham' , ru : 'Гарет Грантам' } ,
'npc.bog_chronicler.v1' : { en : 'Bog Chronicler' , ru : 'Хронист болота' } ,
'npc.sack_ren.v1' : { en : 'Renulf Sackville' , ru : 'Ренульф Саквилл' } ,
'npc.fen_notary.v1' : { en : 'Fen Notary' , ru : 'Нотариус топи' } ,
'npc.brother_salve.v1' : { en : 'Bernard Lukin' , ru : 'Бернард Лукин' } ,
'npc.mire_merchant.v1' : { en : 'Mire Merchant' , ru : 'Торговец трясиной' } ,
'npc.stone_judge.v1' : { en : 'Aldwin Grimston' , ru : 'Олдвим Гримстон' } ,
'npc.reed_coin.v1' : { en : 'Reed Coin' , ru : 'Рид Коин' } ,
'npc.edge_trader.v1' : { en : 'Edmund Edgerton' , ru : 'Эдмунд Эджертон' } ,
'npc.swamp_mender.v1' : { en : 'Swamp Mender' , ru : 'Болотный латальщик' } ,
'npc.crack_merchant.v1' : { en : 'Crispin Aylesford' , ru : 'Криспин Эйлсфорд' } ,
'npc.dune_scout.v1' : { en : 'Dune Scout' , ru : 'Разведчик дюн' } ,
'npc.sister_flint.v1' : { en : 'Brunhild Flint' , ru : 'Брунхильд Флинт' } ,
'npc.silt_trader.v1' : { en : 'Silt Trader' , ru : 'Торговец илом' } ,
'npc.starward_oren.v1' : { en : 'Oren Starward' , ru : 'Орен Старворд' } ,
'npc.sand_peddler.v1' : { en : 'Sand Peddler' , ru : 'Песочный бродяга' } ,
'npc.spire_imports.v1' : { en : 'Simon Spirewell' , ru : 'Саймон Спайрвелл' } ,
'npc.grit_healer.v1' : { en : 'Grit Healer' , ru : 'Грит‑лекарь' } ,
'npc.comet_outfitter.v1' : { en : 'Hugh Comstock' , ru : 'Хью Комсток' } ,
'npc.barrow_keeper.v1' : { en : 'Barrow Keeper' , ru : 'Хранитель курганов' } ,
'npc.void_medic.v1' : { en : 'Yves Portier' , ru : 'Ив Портье' } ,
'npc.bone_outfitter.v1' : { en : 'Bone Outfitter' , ru : 'Костяной снаряженец' } ,
'npc.brine_archivist.v1' : { en : 'Cedric Brinewell' , ru : 'Седрик Брайнвелл' } ,
'npc.cold_peddler.v1' : { en : 'Cold Peddler' , ru : 'Холодный бродяга' } ,
'npc.salt_broker.v1' : { en : 'Osmund Salter' , ru : 'Осмунд Солтер' } ,
'npc.shroud_medic.v1' : { en : 'Shroud Medic' , ru : 'Медик покрова' } ,
'npc.reed_trader.v1' : { en : 'Rhys Reedman' , ru : 'Рис Ридман' } ,
'npc.mist_ranger.v1' : { en : 'Mist Ranger' , ru : 'Рейнджер тумана' } ,
'npc.mud_healer.v1' : { en : 'Godfrey Middleton' , ru : 'Годфри Миддлтон' } ,
'npc.fog_trader.v1' : { en : 'Fog Trader' , ru : 'Торговец туманом' } ,
'npc.post_warden.v1' : { en : 'Wystan Postlethwaite' , ru : 'Вистан Постлтвейт' } ,
'npc.dew_merchant.v1' : { en : 'Dew Merchant' , ru : 'Торговец росой' } ,
'npc.ironmonger.v1' : { en : 'Ivo Ironside' , ru : 'Иво Айронсайд' } ,
'npc.vapor_healer.v1' : { en : 'Vapor Healer' , ru : 'Лекарь пара' } ,
'npc.rivet_seller.v1' : { en : 'Roland Rivett' , ru : 'Роланд Риветт' } ,
'npc.hollow_scribe.v1' : { en : 'Hollow Scribe' , ru : 'Писарь пустоты' } ,
'npc.forge_medic.v1' : { en : 'Lucan Forrest' , ru : 'Люкан Форрест' } ,
'npc.mer_imports.v1' : { en : 'Mer Imports' , ru : 'М е р Импортс' } ,
'npc.bog_chronicler.v1' : { en : 'Alaric Boghurst' , ru : 'Аларик Богхерст' } ,
'npc.rot_trader.v1' : { en : 'Rot Trader' , ru : 'Торговец гнилью' } ,
'npc.fen_notary.v1' : { en : 'Norbert Fenwick' , ru : 'Норберт Фенвик' } ,
'npc.bog_medic.v1' : { en : 'Bog Medic' , ru : 'Болотный медик' } ,
'npc.mire_merchant.v1' : { en : 'Miles Myreham' , ru : 'Майлз Майрэм' } ,
'npc.herald_ash.v1' : { en : 'Ash Herald' , ru : 'Глашатай пепла' } ,
'npc.reed_coin.v1' : { en : 'Cuthbert Reed' , ru : 'Кутберт Рид' } ,
'npc.cinder_seller.v1' : { en : 'Cinder Seller' , ru : 'Продавец золы' } ,
'npc.swamp_mender.v1' : { en : 'Wendel Marsham' , ru : 'Вендел Маршам' } ,
'npc.ember_peddler.v1' : { en : 'Ember Peddler' , ru : 'Угольный бродяга' } ,
'npc.dune_scout.v1' : { en : 'Sigurd Dunstan' , ru : 'Сигурд Дунстан' } ,
'npc.ash_healer.v1' : { en : 'Ash Healer' , ru : 'Пепельный лекарь' } ,
'npc.silt_trader.v1' : { en : 'Silas Siltwell' , ru : 'Сайлас Силтвелл' } ,
'npc.thorn_watcher.v1' : { en : 'Thorn Watcher' , ru : 'Дозорный шипов' } ,
'npc.sand_peddler.v1' : { en : 'Peter Sanderson' , ru : 'Питер Сандерсон' } ,
'npc.briar_trader.v1' : { en : 'Briar Trader' , ru : 'Торговец шипами' } ,
'npc.grit_healer.v1' : { en : 'Griselda Holt' , ru : 'Грисельда Холт' } ,
'npc.root_seller.v1' : { en : 'Root Seller' , ru : 'Продавец корней' } ,
'npc.barrow_keeper.v1' : { en : 'Bartholomew Howe' , ru : 'Бартоломью Х о у ' } ,
'npc.leaf_medic.v1' : { en : 'Leaf Medic' , ru : 'Лиственный медик' } ,
'npc.bone_outfitter.v1' : { en : 'Baldwin Bonewright' , ru : 'Болдуин Бонрайт' } ,
'npc.gale_factor.v1' : { en : 'Gale Factor' , ru : 'Фактор шторма' } ,
'npc.cold_peddler.v1' : { en : 'Cole Aldridge' , ru : 'Кол Олдридж' } ,
'npc.wind_outfitter.v1' : { en : 'Wind Outfitter' , ru : 'Ветряной снаряженец' } ,
'npc.shroud_medic.v1' : { en : 'Shadrach Morrow' , ru : 'Шадрак М о р р о у ' } ,
'npc.gust_peddler.v1' : { en : 'Gust Peddler' , ru : 'Порывистый бродяга' } ,
'npc.mist_ranger.v1' : { en : 'Rowan Mistwell' , ru : 'Роуан Миствелл' } ,
'npc.breeze_healer.v1' : { en : 'Breeze Healer' , ru : 'Лекарь бриза' } ,
'npc.fog_trader.v1' : { en : 'Fergus Fogarty' , ru : 'Фергус Фогарти' } ,
'npc.frost_archivist.v1' : { en : 'Frost Archivist' , ru : 'Морозный архивариус' } ,
'npc.dew_merchant.v1' : { en : 'Dewi Tarrant' , ru : 'Дьюи Таррант' } ,
'npc.rime_trader.v1' : { en : 'Rime Trader' , ru : 'Торговец инеем' } ,
'npc.vapor_healer.v1' : { en : 'Vespasian Vale' , ru : 'Веспасиан Вейл' } ,
'npc.hoarfrost_seller.v1' : { en : 'Hoarfrost Seller' , ru : 'Продавец инея' } ,
'npc.hollow_scribe.v1' : { en : 'Hugo Holloway' , ru : 'Хьюго Холлоуэй' } ,
'npc.ice_medic.v1' : { en : 'Ice Medic' , ru : 'Лёд‑медик' } ,
'npc.mer_imports.v1' : { en : 'Meredith Stowe' , ru : 'Мередит Стоу' } ,
'npc.sun_warden.v1' : { en : 'Sun Warden' , ru : 'Страж солнца' } ,
'npc.rot_trader.v1' : { en : 'Roderick Rotherham' , ru : 'Родрик Ротерем' } ,
'npc.cliff_merchant.v1' : { en : 'Cliff Merchant' , ru : 'Утёсный торговец' } ,
'npc.bog_medic.v1' : { en : 'Beatrice Boghurst' , ru : 'Беатрис Богхерст' } ,
'npc.crag_peddler.v1' : { en : 'Crag Peddler' , ru : 'Краг‑бродяга' } ,
'npc.herald_ash.v1' : { en : 'Ashford Hale' , ru : 'Эшфорд Хейл' } ,
'npc.dust_healer.v1' : { en : 'Dust Healer' , ru : 'Пыльный лекарь' } ,
'npc.cinder_seller.v1' : { en : 'Cyril Cinders' , ru : 'Сирил Синдерс' } ,
'npc.ford_marshal.v1' : { en : 'Ford Marshal' , ru : 'Маршал брода' } ,
'npc.ember_peddler.v1' : { en : 'Emrys Emberly' , ru : 'Эмрис Эмберли' } ,
'npc.river_trader.v1' : { en : 'River Trader' , ru : 'Речной торговец' } ,
'npc.ash_healer.v1' : { en : 'Alicia Ashford' , ru : 'Алисия Эшфорд' } ,
'npc.bridge_seller.v1' : { en : 'Bridge Seller' , ru : 'Продавец мостов' } ,
'npc.thorn_watcher.v1' : { en : 'Thorne Hawthorn' , ru : 'Торн Хоторн' } ,
'npc.stream_medic.v1' : { en : 'Stream Medic' , ru : 'Ручьевой медик' } ,
'npc.briar_trader.v1' : { en : 'Brian Briarton' , ru : 'Брайан Брайартон' } ,
'npc.veil_seer.v1' : { en : 'Veil Seer' , ru : 'Видящая завесы' } ,
'npc.root_seller.v1' : { en : 'Rowan Rootwell' , ru : 'Роуан Рутвелл' } ,
'npc.star_trader.v1' : { en : 'Star Trader' , ru : 'Звёздный торговец' } ,
'npc.leaf_medic.v1' : { en : 'Leofric Leaford' , ru : 'Леофрик Лиффорд' } ,
'npc.nebula_peddler.v1' : { en : 'Nebula Peddler' , ru : 'Туманность‑бродяга' } ,
'npc.gale_factor.v1' : { en : 'Galfrid Gales' , ru : 'Галфрид Гейлс' } ,
'npc.veil_mender_starveil.v1' : { en : 'Veil Mender' , ru : 'Латальщик завесы' } ,
'npc.wind_outfitter.v1' : { en : 'Wynstan Windham' , ru : 'Винстан Виндхэм' } ,
'npc.gust_peddler.v1' : { en : 'Gustav Merseburg' , ru : 'Густав М е р с е б у р г ' } ,
'npc.breeze_healer.v1' : { en : 'Blaise Brissot' , ru : 'Блез Бриссо' } ,
'npc.frost_archivist.v1' : { en : 'Archibald Frostwick' , ru : 'Арчибальд Фроствик' } ,
'npc.rime_trader.v1' : { en : 'Rhys Rimer' , ru : 'Рис Ример' } ,
'npc.hoarfrost_seller.v1' : { en : 'Horace Hoarwell' , ru : 'Х о р а с Хоаруэлл' } ,
'npc.ice_medic.v1' : { en : 'Isolde Ismay' , ru : 'Изольда Измей' } ,
'npc.sun_warden.v1' : { en : 'Solomon Sunderland' , ru : 'Соломон Сандерленд' } ,
'npc.cliff_merchant.v1' : { en : 'Clifford Cliffeton' , ru : 'Клиффорд Клиффетон' } ,
'npc.crag_peddler.v1' : { en : 'Craig Cragwell' , ru : 'Крейг Крагвелл' } ,
'npc.dust_healer.v1' : { en : 'Dustin Harwell' , ru : 'Дастин Харуэлл' } ,
'npc.ford_marshal.v1' : { en : 'Marshall Fordham' , ru : 'Маршалл Фордхэм' } ,
'npc.river_trader.v1' : { en : 'Rivers Trent' , ru : 'Риверс Трент' } ,
'npc.bridge_seller.v1' : { en : 'Bridges Ballard' , ru : 'Бриджес Баллард' } ,
'npc.stream_medic.v1' : { en : 'Sterling Brook' , ru : 'Стерлинг Брук' } ,
'npc.veil_seer.v1' : { en : 'Sevrin Veilcourt' , ru : 'Севрин Вейлкорт' } ,
'npc.star_trader.v1' : { en : 'Sterling Starwell' , ru : 'Стерлинг Старвелл' } ,
'npc.nebula_peddler.v1' : { en : 'Neville Nevett' , ru : 'Невилл Неветт' } ,
'npc.veil_mender_starveil.v1' : { en : 'Vera Veilhart' , ru : 'В е р а Вейлхарт' } ,
'npc.capital.merchant_clerk.v1' : { en : 'Hugh Pennington' , ru : 'Хью Пеннингтон' } ,
'npc.capital.armorer.v1' : { en : "Raoul d'Aubigny" , ru : 'Рауль д’Обиньи' } ,
'npc.capital.smith.v1' : { en : 'Gilles Ferron' , ru : 'Жиль Феррон' } ,
'npc.capital.jeweler.v1' : { en : 'Ysabel Tremaine' , ru : 'Изабель Тремейн' } ,
'npc.capital.bounty_agent_a.v1' : { en : 'Roderick Vaughn' , ru : 'Родрик Вон' } ,
'npc.capital.bounty_agent_b.v1' : { en : 'Matteo Fabbri' , ru : 'Маттео Фаббри' } ,
'npc.capital.elder.v1' : { en : 'Anselm Corwyn' , ru : 'Ансельм Корвин' } ,
'npc.capital.healer.v1' : { en : 'Clothilde Mercier' , ru : 'Клотильда Мерсье' } ,
'npc.capital.second_armorer.v1' : { en : 'Bertrand Hale' , ru : 'Бертранд Хейл' } ,
'npc.capital.second_jeweler.v1' : { en : 'Eleonore Rivard' , ru : 'Элеонор Ривар' } ,
} ;
} ;
const DIALOGUES : Record < string , Bilingual > = {
const DIALOGUES : Record < string , Bilingual > = {
@ -201,6 +232,8 @@ export function townLabel(locale: Locale, key: string | undefined, fallback: str
export function npcLabel ( locale : Locale , key : string | undefined , fallback : string ) : string {
export function npcLabel ( locale : Locale , key : string | undefined , fallback : string ) : string {
if ( ! key ) return fallback ;
if ( ! key ) return fallback ;
const byId = npcByIdKeyLabel ( locale , key ) ;
if ( byId ) return byId ;
const b = NPCS [ key ] ;
const b = NPCS [ key ] ;
return b ? pick ( locale , b ) : fallback ;
return b ? pick ( locale , b ) : fallback ;
}
}