""" get_npc_races.py — маппинг биома на типичные расы NPC. По аналогии с get_creature.py: используется encounter_generator при вызове get_npc, чтобы ограничить пул рас биомом. Пустой список (или отсутствующий биом) = все расы без ограничений. """ NPC_RACES_BY_ENV: dict[str, list[str]] = { "arctic": [ "Human", # основное население севера "Goliath", # горные и арктические кочевники "Half-Orc", # выносливые, часто в северных племенах "Dwarf", # горные кланы у края ледников "Orc", # северные племена "Genasi", # воздушные и водные генази — редко, но возможно "Tiefling", # изгнанники и одиночки ], "coastal": [ "Human", # рыбаки, моряки, торговцы "Half-Elf", # портовые города полны полукровок "Triton", # прибрежные общины, выходящие на сушу "Genasi", # водные генази — у моря естественны "Dwarf", # морские торговцы "Halfling", # торговые суда, таверны "Gnome", # механики, картографы "Tabaxi", # странствующие торговцы с далёких берегов "Tiefling", # портовые города терпимы к чужакам "Half-Orc", # докеры, наёмники "Kenku", # воры и информаторы в портах "Lizardfolk", # прибрежные болота рядом "Orc", # пираты, наёмные моряки "Aasimar", # редко, но встречаются ], "desert": [ "Human", # основное население пустынь "Genasi", # огненные и воздушные — у себя дома "Tabaxi", # кочевые охотники "Tiefling", # торговые пути, одиночки "Half-Elf", # торговцы на маршрутах "Dragonborn", # кланы в руинах древних империй "Gnome", # алхимики, искатели артефактов "Yuan-ti Pureblood", # их цивилизации исторически в пустынях "Kobold", # в руинах и пещерах под песком "Halfling", # торговые караваны "Aasimar", # странники, несущие миссию "Half-Orc", # наёмники охраны каравана "Lizardfolk", # оазисы, реки ], "forest": [ "Human", # охотники, дровосеки, деревни "Elf", # лесные общины — естественная среда "Half-Elf", # дети смешанных союзов "Firbolg", # хранители леса "Gnome", # лесные гномы в чаще "Halfling", # деревни на опушках "Wood Elf", # лесные эльфы "Goblin", # банды в чаще "Kobold", # норы под корнями "Tabaxi", # охотники-одиночки "Kenku", # падальщики и воры "Half-Orc", # изгнанники, охотники "Orc", # племена в глубоком лесу "Tiefling", # отшельники, беглецы "Aasimar", # странники "Lizardfolk", # у болотистых рек "Dragonborn", # редкие кланы "Satyr", # фейские опушки "Genasi", # природные генази ], "grassland": [ "Human", # фермеры, пастухи, кочевники "Halfling", # сельские общины "Half-Orc", # племена степей "Orc", # кочевые орды "Gnome", # деревни торговцев "Half-Elf", # странствующие торговцы "Goliath", # кочевые воины "Tabaxi", # охотники на просторах "Dragonborn", # кланы воинов "Tiefling", # одиночки среди людских общин "Kenku", # у дорог и трактов "Kobold", # норы в холмах "Aasimar", # редкие странники "Leonin", # прайды в открытых равнинах — их естественная среда "Genasi", # воздушные генази ], "hill": [ "Human", # деревни и фермы "Dwarf", # холмовые кланы "Halfling", # норы в холмах — классическая среда "Gnome", # холмовые гномы "Half-Orc", # наёмники и изгнанники "Orc", # племена холмов "Goblin", # многочисленны в холмах "Hobgoblin", # военные лагеря "Kobold", # шахты и норы "Tiefling", # одиночки "Half-Elf", # торговцы между деревнями "Dragonborn", # воинские кланы "Goliath", # у предгорий "Kenku", # у дорог "Aasimar", # редко ], "mountain": [ "Human", # горные деревни, монастыри "Dwarf", # горные твердыни — их дом "Goliath", # высокогорные кочевники "Dragonborn", # горные кланы "Gnome", # шахтёры "Half-Orc", # горные наёмники "Orc", # горные племена "Tiefling", # отшельники в горных монастырях "Aasimar", # паломники, отшельники "Kobold", # в шахтах и пещерах "Goblin", # в расщелинах "Hobgoblin", # военные форпосты "Genasi", # земляные и огненные "Kenku", # у горных троп ], "swamp": [ "Human", # рыбаки, браконьеры, отшельники "Lizardfolk", # болотные общины — их естественная среда "Yuan-ti Pureblood", # древние культы в руинах "Genasi", # водные генази "Half-Orc", # изгнанники "Goblin", # болотные банды "Kobold", # в норах у воды "Tiefling", # отшельники и культисты "Kenku", # падальщики "Orc", # племена болот "Gnome", # алхимики, охотники за ингредиентами "Half-Elf", # искатели приключений "Tabaxi", # охотники "Aasimar", # редко, миссионеры ], "underdark": [ "Dwarf", # дуэргары и обычные дварфы в приграничных крепостях "Gnome", # глубинные гномы (svirfneblin) "Elf", # дроу "Half-Elf", # потомки дроу и поверхностных рас "Goblin", # многочисленны в пещерах "Hobgoblin", # военные отряды "Kobold", # повсюду в туннелях "Orc", # глубинные кланы "Half-Orc", # среди орочьих кланов "Tiefling", # культисты, беглецы с поверхности "Genasi", # земляные и огненные у жерл "Aasimar", # редчайшие — пленники или странники "Dragonborn", # редкие кланы, связанные с глубинными драконами "Gith", # githyanki и githzerai проходят через Андердарк "Human", # шахтёры, искатели, беглецы с поверхности "Bugbear", # охотники в темноте ], "underwater": [ "Triton", # подводные общины — их дом "Genasi", # водные генази "Human", # редко, с магической защитой "Half-Elf", # с зельями или артефактами "Aasimar", # миссионеры из морских храмов ], "urban": [ "Human", # большинство населения городов "Half-Elf", # везде как рыба в воде "Dwarf", # торговцы, ремесленники "Gnome", # изобретатели, алхимики, иллюзионисты "Halfling", # воры, торговцы, слуги "Tiefling", # городская среда терпима или враждебна — в любом случае они здесь "Half-Orc", # охранники, докеры, наёмники "Elf", # послы, маги, торговцы "Dragonborn", # воины, гильдейские члены "Aasimar", # жрецы, паладины "Kenku", # воры, информаторы, гонцы "Goblin", # трущобы, подземелья под городом "Kobold", # слуги, механики в мастерских "Tabaxi", # торговцы из дальних стран "Orc", # охранники, строители "Bugbear", # бандиты, вышибалы "Hobgoblin", # наёмные солдаты, городская стража "Genasi", # маги, ремесленники "Lizardfolk", # редко, торговые посольства "Yuan-ti Pureblood", # инфильтраторы в богатых кварталах "Gith", # очень редко, искатели артефактов "Satyr", # артисты, бродяги ], "nine_hells": [ "Tiefling", # чувствуют зов крови "Human", # авантюристы, культисты, проклятые "Aasimar", # пленники или посланники "Dragonborn", # кланы, заключившие инфернальные договоры "Half-Elf", # искатели запретного знания "Gith", # githyanki — союзники Тиамат "Genasi", # огненные генази "Half-Orc", # наёмники на инфернальной службе ], "astral_sea": [ "Human", # авантюристы, искатели "Gith", # githyanki — хозяева Астрального моря "Aasimar", # небесные странники "Tiefling", # торговцы между планами "Genasi", # воздушные генази "Half-Elf", # дипломаты между планарными фракциями "Dragonborn", # планарные рыцари "Gnome", # исследователи и картографы планов ], "feywild": [ "Elf", # тесно связаны с Феидом "Half-Elf", # притянуты фейской кровью "Gnome", # лесные гномы — почти фейские существа "Satyr", # их родной план "Tiefling", # изгнанники, ищущие красоты "Halfling", # любопытные путешественники "Human", # заблудившиеся или призванные "Firbolg", # хранители фейских рощ "Aasimar", # посланники в фейские дворы "Genasi", # природные генази "Tabaxi", # очарованные странники "Dragonborn", # редко, по древним договорам ], "plane_of_air": [ "Aarakocra", # коренные обитатели облачных городов "Genasi", # воздушные генази, рождённые стихией "Djinn", # правят дворцами, редко общаются с чужаками "Elf", # искатели знаний, пилоты летучих кораблей "Human", # купцы, наёмники, беглецы "Tiefling", # дипломаты или изгнанники "Aasimar", # посланники богов ветра "Gith", # githyanki – рейдеры, githzerai – отшельники "Gnome", # изобретатели летательных аппаратов "Halfling", # торговцы на воздушных рынках "Kenku", # шпионы и воры при дворах джиннов "Tabaxi", # охотники на высоте, ценят свободу "Dragonborn", # воины, связанные с небесными драконами ], "plane_of_earth": [ "Dwarf", # хозяева подземных твердынь, шахтёры "Gnome", # глубинные гномы, камнерезы и иллюзионисты "Genasi", # земляные генази, хранители пещер "Goliath", # кочевники горных хребтов "Half-Orc", # наёмники, охрана караванов "Orc", # племена в глубоких пещерах "Dragonborn", # кланы, связанные с драконами земли "Tiefling", # искатели древней силы "Aasimar", # паломники к священным местам "Goblin", # банды в туннелях "Kobold", # мастера ловушек и шахтёры "Hobgoblin", # военные отряды "Dao", # джинны земли, правители дворцов "Duergar", # тёмные дварфы, злобные обитатели глубин ], "plane_of_fire": [ "Genasi", # огненные генази, коренные жители "Tiefling", # заключают сделки с эфритами "Dragonborn", # рыцари, связанные с драконами огня "Azer", # огненные дварфы, кузнецы "Efreet", # джинны огня, правители-тираны "Half-Orc", # наёмники в армиях эфритов "Orc", # племена у жерл вулканов "Goblin", # слуги и рабочая сила "Kobold", # хранители сокровищ в горячих пещерах "Aasimar", # посланники добра, пытаются смягчить тиранию "Human", # авантюристы, купцы, беженцы "Dwarf", # горные дварфы, искатели редких руд "Gith", # рейдеры или отшельники ], "plane_of_water": [ "Triton", # коренные обитатели, стражи глубин "Genasi", # водные генази, лоцманы и целители "Elf", # морские эльфы, кочевники рифов "Human", # моряки, торговцы, пираты "Aasimar", # посланники морских божеств "Tiefling", # изгои или пираты глубин "Dragonborn", # воины, связанные с морскими драконами "Lizardfolk", # охотники на болотах и мелководье "Dwarf", # подводные крепости, добытчики жемчуга "Gnome", # изобретатели подводных аппаратов "Marid", # джинны воды, своенравные правители "Merfolk", # рыбаки, певцы, хранители знаний ], } def get_npc_races(env: str) -> list[str]: """ Возвращает список рас для биома. Если биом не найден или список пустой — возвращает [], что в get_npc означает 'все расы'. """ return NPC_RACES_BY_ENV.get(env.lower().strip(), [])