Каталог кончался громилой на седьмом этаже: глубже бюджет опасности выбирался теми же пятью видами, то есть спуск переставал показывать новое ровно там, где обязан был начать. CINDER (D9) горит сама - дробовик против неё бесполезен, первый повод носить второй ствол. STINGER (D21) не убивает, а не даёт стоять. SWARM (D36) толпа в одном теле, сектор 160 градусов - вбок не обойти, берётся площадью. HUSK (D36) стена: 0.70 по кинетике, вскрывается только кислотой. SLEEPER (D44) с радиусом агро 3.4 - мимо неё МОЖНО пройти, а разбуженная бьёт кругом на 62 по всем, кто шёл кучей. WAILER (D53) меняет порядок целей: пока жив, павшие рядом встают вшестеро быстрее. VOIDLING (D73) ровные 0.45 по шести стихиям - верного ствола нет, берётся срезанием сопротивлений. Аура воскрешения у плакальщика РАБОТАЕТ, а не описана: список поднимающих собирается раз в шаг, берётся наибольший множитель, а не сумма. В песочнице приёмки список всегда пуст. Ни одного множителя от глубины, ни одного иммунитета, ни одного числа вне EnemyDefOf. ИНСТРУМЕНТЫ ЗНАЛИ ПОЛОВИНУ ИГРЫ. Список KINDS в tools.cpp был захардкожен пятью видами и не содержал даже личинки: --tool enemies и --tool ttk молчали про остальных. Теперь там весь бестиарий, тринадцать видов. Личинка из коридора стихий исключена намеренно и с пометкой "учебная": она населяет первые этажи и умирает от чего угодно - в этом её работа. Требовать от неё разброса значило бы требовать знания стихий на первом этаже. Проверено: --descend 80 собирает все глубины, --tool ttk в коридоре, --accept PASS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
82 lines
7.7 KiB
Plaintext
82 lines
7.7 KiB
Plaintext
# Каталог размещаемых сущностей — граница между движком и игрой.
|
||
#
|
||
# Редактор комнат читает ТОЛЬКО этот файл: он не знает, что такое SHAMBLER и
|
||
# чем тот бьёт, он знает id, класс, цвет, глубину и цену. Игра переводит id в
|
||
# свои EnemyKind и ItemId одной таблицей (src/sim/spawn_catalog.cpp).
|
||
#
|
||
# entity <id> ключ=значение ...
|
||
#
|
||
# class monster | prop | loot
|
||
# depth N — с этажа N и глубже
|
||
# N..M — с N по M включительно
|
||
# danger цена в бюджете опасности этажа. Не урон и не HP, а «сколько места
|
||
# в голове игрока эта тварь занимает». Бюджет — то, чем этаж
|
||
# отличается по СЛОЖНОСТИ, а не по числу тел
|
||
# tier качество предмета: этаж выдаёт свой тир и всё, что ниже
|
||
# color чем редактор рисует сущность, пока для неё нет спрайта
|
||
#
|
||
# Порядок ключей не важен, лишние ключи — ошибка, а не молчаливый пропуск.
|
||
# Порядок СТРОК важен: это порядок палитры в редакторе.
|
||
|
||
# --- твари -------------------------------------------------------------------
|
||
# Кривая простая и читается сверху вниз: первые этажи — бредущие и бегуны,
|
||
# дальше подключаются плевки, громилы и хваты. Верхняя граница у мелочи есть
|
||
# намеренно: на двадцатом этаже одиночный бредущий занимал бы место, которое
|
||
# должно достаться чему-то, чего игрок ещё не видел.
|
||
entity larva class=monster depth=1..4 danger=0.7 radius=0.28 color=132,120,78 sprite=shambler_walk name=LARVA
|
||
entity shambler class=monster depth=3 danger=1.0 radius=0.34 color=116,52,52 sprite=shambler_walk name=SHAMBLER
|
||
entity rusher class=monster depth=4 danger=1.3 radius=0.27 color=158,74,44 sprite=rusher_walk name=RUSHER
|
||
entity spitter class=monster depth=3 danger=2.0 radius=0.31 color=96,132,72 sprite=spitter_walk name=SPITTER
|
||
entity lurker class=monster depth=5 danger=2.6 radius=0.30 color=88,62,118 sprite=lurker_walk name=LURKER
|
||
entity brute class=monster depth=7 danger=4.5 radius=0.46 color=142,60,78 sprite=brute_walk name=BRUTE
|
||
|
||
# Акты II-VI. До этого каталог кончался громилой на седьмом этаже, и глубже
|
||
# бюджет опасности выбирался теми же пятью видами — то есть спуск переставал
|
||
# показывать новое ровно там, где обязан был начать.
|
||
entity cinder class=monster depth=9 danger=2.8 radius=0.32 color=178,92,40 sprite=shambler_walk name=CINDER
|
||
entity stinger class=monster depth=21 danger=2.2 radius=0.26 color=104,120,132 sprite=spitter_walk name=STINGER
|
||
entity swarm class=monster depth=36 danger=1.6 radius=0.30 color=138,132,56 sprite=rusher_walk name=SWARM
|
||
entity husk class=monster depth=36 danger=7.0 radius=0.44 color=128,122,104 sprite=brute_walk name=HUSK
|
||
entity sleeper class=monster depth=44 danger=6.0 radius=0.50 color=96,88,74 sprite=brute_walk name=SLEEPER
|
||
entity wailer class=monster depth=53 danger=8.0 radius=0.33 color=158,150,176 sprite=spitter_walk name=WAILER
|
||
entity voidling class=monster depth=73 danger=11.0 radius=0.32 color=52,48,86 sprite=lurker_walk name=VOIDLING
|
||
|
||
# Мишень приёмки: не ходит и не бьёт. Опасности не несёт, поэтому и бюджета
|
||
# не тратит — ею ставят неподвижную цель, когда нужна именно цель.
|
||
entity dummy class=monster depth=1 danger=0.0 radius=0.34 color=120,44,44 sprite=- name=TARGET
|
||
|
||
# --- обстановка --------------------------------------------------------------
|
||
# Ломается, не отрастает обратно и не участвует в зачистке.
|
||
entity crate class=prop depth=1 radius=0.38 color=104,76,46 sprite=prop_crate name=CRATE
|
||
entity barrel class=prop depth=1 radius=0.33 color=92,84,58 sprite=prop_barrel name=BARREL
|
||
entity locker class=prop depth=2 radius=0.36 color=78,88,96 sprite=prop_locker name=LOCKER
|
||
|
||
# --- лут ---------------------------------------------------------------------
|
||
# Тир — это «с какой глубины вещь становится находкой». Нижние тиры с глубиной
|
||
# не исчезают: бинт нужен всегда, он просто перестаёт быть удачей.
|
||
entity ammo class=loot tier=0 depth=1 radius=0.22 color=200,176,96 sprite=item_icon_ammo name=AMMO
|
||
entity bandage class=loot tier=0 depth=1 radius=0.22 color=216,208,196 sprite=item_icon_bandage name=BANDAGE
|
||
# Батарея — второй расходник первой необходимости после бинта: свет садится сам
|
||
# и на всех, поэтому нижним тиром и с первого этажа. Иконки пока нет.
|
||
entity battery class=loot tier=0 depth=1 radius=0.22 color=150,210,200 sprite=- name=BATTERY
|
||
entity pistol class=loot tier=0 depth=1 radius=0.24 color=190,180,168 sprite=item_icon_pistol name=PISTOL
|
||
entity knife class=loot tier=0 depth=1 radius=0.22 color=214,222,232 sprite=item_icon_knife name=KNIFE
|
||
entity jacket class=loot tier=0 depth=1 radius=0.26 color=122,112,96 sprite=item_icon_jacket name=JACKET
|
||
|
||
entity rifle class=loot tier=1 depth=2 radius=0.26 color=208,196,150 sprite=item_icon_rifle name=CARBINE
|
||
entity saber class=loot tier=1 depth=2 radius=0.26 color=200,212,228 sprite=item_icon_saber name=SABER
|
||
entity vest class=loot tier=1 depth=3 radius=0.26 color=108,118,108 sprite=item_icon_vest name=VEST
|
||
entity stimpack class=loot tier=1 depth=3 radius=0.22 color=130,220,170 sprite=item_icon_stimpack name=STIM
|
||
|
||
entity smg class=loot tier=2 depth=5 radius=0.26 color=176,200,220 sprite=item_icon_smg name=SMG
|
||
entity shotgun class=loot tier=2 depth=6 radius=0.28 color=214,158,104 sprite=item_icon_shotgun name=SHOTGUN
|
||
entity cleaver class=loot tier=2 depth=6 radius=0.28 color=196,174,160 sprite=item_icon_cleaver name=CLEAVER
|
||
entity spurs class=loot tier=2 depth=5 radius=0.22 color=198,184,120 sprite=item_icon_spurs name=SPURS
|
||
entity lantern class=loot tier=2 depth=4 radius=0.24 color=240,206,130 sprite=item_icon_lantern name=LANTERN
|
||
|
||
entity magnum class=loot tier=3 depth=9 radius=0.28 color=226,210,176 sprite=item_icon_magnum name=MAGNUM
|
||
entity bow class=loot tier=3 depth=10 radius=0.26 color=154,190,164 sprite=item_icon_bow name=BOW
|
||
entity plate class=loot tier=3 depth=9 radius=0.30 color=140,146,156 sprite=item_icon_plate name=PLATE
|
||
entity shroud class=loot tier=3 depth=11 radius=0.26 color=88,84,100 sprite=item_icon_shroud name=SHROUD
|
||
entity charm class=loot tier=3 depth=8 radius=0.22 color=196,130,190 sprite=item_icon_charm name=CHARM
|