290 lines
18 KiB
Python
290 lines
18 KiB
Python
"""
|
||
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(), []) |