Skip to content

Latest commit

 

History

History
209 lines (160 loc) · 12.8 KB

File metadata and controls

209 lines (160 loc) · 12.8 KB

Каталог поставляемых скриптов (Scripts.vfs)

Сборка alpha поставляет 373 скомпилированных скрипта в Scripts.vfs, покрывая всё — от взаимодействий с конкретными предметами до логики мира верхнего уровня. Этот документ группирует их по конвенции именования, чтобы можно было найти нужный файл при исследовании поведения.

Все записи — <name>.bin; байтовая раскладка .bin находится в bin_format.md. Исходники (где есть) лежат в SRC/PlagueCity/Game/script_sources/.


1. Сводка

Префикс / категория Кол-во
NPC_* 29
citizen_* 30
item_* 47
ui_* 47
actor_* 5
arena_* 3
world_* 2
bonfire* 2
Кинематика (cs_*) 1
Двери (door_*) 1
Прочая окружающая среда (agony1, barricade, sound_fake3d, weather, music, blood, bull, …) ~ 200

Категория «прочая окружающая среда» — большинство: каждая запись — поведение одного конкретного актора в игровом мире.


2. Скрипты уровня мира

Файл Роль
world_danko.bin Логика верхнего уровня кампании Бакалавра (Данко).
world_min.bin Минимальный каркас мира — для тестовых сцен / отладочного старта.
weather.bin Управляет конечным автоматом погоды.
music.bin Управляет переходами между музыкальными регионами.

Загружаются из formats/world_xml.md:

<Script>world_danko.bin</Script>
<Weather><Script>weather.bin</Script></Weather>
<Music><Script>music.bin</Script></Music>

3. Базовые скрипты классов акторов (actor_*.bin)

5 базовых классов, от которых другие скрипты наследуются в исходниках .sc. Источники: script_sources/actor_*.sc{i,}.

Файл Исходник .sc(i) Роль
actor_item.bin actor_item.sc + actor_item_base.sci Подбираемый предмет инвентаря.
actor_item_disp.bin actor_item_disp.sc Предмет инвентаря с кастомной диспетчеризацией.
actor_item_dummy.bin actor_item_dummy.sc Декоративный предмет (не подбираемый).
actor_item_steal.bin actor_item_steal.sc Воруемый предмет (поднимает флаг преступления при взятии).
actor_disp.bin actor_disp.sc Общий диспетчер (роутер событий).

4. Скрипты класса предметов (item_*.bin, 47 файлов)

Один скрипт на тип предмета, у которого есть особое поведение при использовании: медицинские предметы, оружие, еда, квестовые предметы. Примеры:

Файл Поведение
item_alpha_pills.bin Альфа-таблетки (медицина — частичное лечение)
item_beta_pills.bin Бета-таблетки (продвинутое лечение)
item_white_vaccine.bin, item_black_vaccine.bin, item_blue_vaccine.bin Вакцины — иммунизация от Песочной язвы
item_bandage.bin Бинт (остановка кровотечения)
item_burah_serum.bin Сыворотка Бакалавра (критическая для квеста)
item_bottle_water.bin Бутылка с водой (жажда)
item_bread.bin Хлеб (голод)
item_boot_army.bin, item_boot_repel.bin Обувь (бонусы к характеристикам)
item_balahon.bin Балахон (надеваемый плащ — бонус к защите от элементов)
item_detector.bin Детектор чумы
item_etorfin.bin, item_fenol.bin, item_feromicin.bin Препараты / яды
(ещё 37 — полный список под Scripts/item_*.bin)

Предметы без скрипта используют дефолтный actor_item.bin из §3.


5. Скрипты NPC

Два параллельных набора:

5.1 NPC_* (29 файлов) — деревья диалогов именованных NPC

Логика разговоров для каждого NPC в кампании Бакалавра. Конвенция именования: NPC_<character>_<other>.bin для персонажа <character>, когда он разговаривает с <other>.

Примеры:

NPC_Danko_Aglaja.bin     — Bachelor talks to Aglaja
NPC_Danko_Andrei.bin     — Bachelor talks to Andrei
NPC_Danko_Burah.bin      — Bachelor talks to himself
NPC_Burah_Danko.bin      — (legacy from cross-campaign test)

(всего 29 файлов именованных NPC, в основном по одному на квестового NPC).

5.2 citizen_* (30 файлов) — поведение обычных граждан

NPC-скрипты, не привязанные к конкретному персонажу — обычные горожане, населяющие город.

Шаблон Значение
citizen_<name>.bin Живой вариант
citizen_<name>_d.bin «Мёртвый» / умирающий вариант (другое дерево диспетчеризации)

Примеры: citizen_boy, citizen_girl, citizen_butcher, citizen_dohodyaga, citizen_alkash (пьяница), citizen_dog, citizen_littleboy.


6. UI-скрипты (ui_*, 47 файлов)

Один скрипт на UI-форму в UI.vfs/*.xml (formats/ui_xml.md). Примеры:

Файл Привязанная UI-форма
ui_dialog.bin Экран диалога с NPC
ui_diary.bin Дневник игрока
ui_inventory.bin Инвентарь
ui_worldmap.bin Карта мира
ui_playerstat.bin HUD статов игрока
ui_mail.bin Письмо / сообщение в игре
ui_cursor.bin Смена курсора при наведении
ui_button.bin Переиспользуемый виджет кнопки
ui_container_slot.bin Один слот в UI контейнера
ui_corpse.bin, ui_corpse_slot.bin, ui_corpse_tool.bin Обыск мертвого тела
ui_dialog_history.bin Просмотр истории разговора
ui_dialog_photo.bin Фото NPC в диалоге
ui_agony.bin Оверлей «Игрок умирает»
ui_game_pers_choose.bin Выбор персонажа в новой игре
ui_game_button_highlight.bin Подсветка наведения на кнопках игрового меню
(ещё 37)

7. Прочие категории

Файл / семейство Роль
door_locked.bin Запертая дверь — требует отмычку или ключ
bonfire.bin, bonfire_geom.bin Горящий костёр (свет + тепло + эмиттер частиц)
barricade.bin Актор деревянной баррикады (HP, разрушаемая)
arena_fighter.bin, arena_manager.bin, arena_spectator.bin Мини-игра арены боя быков
bull.bin Поведение быка для арены
agony1.bin Поведение умирающего NPC (медленная анимация смерти + последние слова)
bomber.bin Самоубийца со взрывчаткой
big_gun.bin Стационарное тяжёлое оружие
bed.bin Актор кровати (спать до…)
barrel_water.bin Бочка с водой (пить, чтобы утолить жажду)
blood.bin Эффект частиц крови
container*.bin Семейство UI / поведения контейнеров
cs_play_all.bin Выбор кинематических вставок / отладочный инструмент — проигрывает каждую CS по очереди
sound_fake3d.bin Привязан к размещению ACTOR_SOUND_FAKE3D

8. Как найти, какой скрипт привязан к какому актору

В каждом XML сцены (Actors.vfs/*.xml, см. formats/actor_xml.md) объявлено <Script>name.bin</Script>, если у актора есть скрипт. Два способа поиска:

  • grep -r "Script>foo.bin" alpha/data/Actors/ (после извлечения).
  • Просмотреть Actors.vfs через pkutil l Actors.vfs и заглянуть в интересующие .xml-файлы.

9. Статус round-trip

Все 373 скрипта из этого каталога проходят байт-идентичный round-trip pathologic_re/parser/batch_test_2005.py (.bin → .asm → .c → .asm → .bin). 972 HD-скрипта также проходят 100 %; 483 Void-скрипта проходят 100 % через disasm/void_re/. См. editions_diff.md.


10. Перекрёстные ссылки