Skip to content

Instantly share code, notes, and snippets.

@DartPower
Created July 24, 2020 23:31
Show Gist options
  • Select an option

  • Save DartPower/f68dd6a079a4cbf9265a541d16e57f14 to your computer and use it in GitHub Desktop.

Select an option

Save DartPower/f68dd6a079a4cbf9265a541d16e57f14 to your computer and use it in GitHub Desktop.
Sample DECORATE
ACTOR NewZombieMan : ZombieMan replaces ZombieMan 10000
// ACTOR нужно писать всегда при создании любого объекта (актора).
// Название NewZombieMan говорит нам о названии моба. © Кэп
// Двоеточие говорит о наследственнмо акторе, с которого береться код. Код в данном акторе будет земенять тот код, который в наследственном акторе.
// Название наследственного актора. Должен существовать, иначе игра скажет Вам что такого актора нет.
// replaces говорит о полной замене всех на карте (например) данного вида на этот вид. Т.е. заменятся все зомбимены на этот.
// Название заменяемого объекта.
// DoomEdNum. Число для редактора карт. Чтобы можно было поставить как отдельного актора. Тут replaces может быть не так уж и обязателн.
{
Health 100 // Задаем жизнь как у игрока.
Speed 25 // Задаем скорость как у плазменного шара.
PainChance 255 // Постоянно будет переходить в состояние боли при нанесении ему урона.
SeeSound "grunt/pain" // Когда увидет игрока, будет воспроизводить звук боли.
DropItem "ShellBox" // После смерти будет дропать актор коробки с гильзами для шотгана.
Monster // Задаем инструкцию, что данный актор - враждебный объект.
States // Здесь задается структура сценового поведения актора. Состояния спавна, зрения, боли, атаки, смерти и воскрешении арчвайлом.
{
Spawn: // Состояние спавна. Задаем код того, что будет происходить при появлении на карте.
// Дальше идет структура в таком формате: "Первые 4 символа названия спрайта" "5ый символ имени лампа спрайта" "скорость в тиках" "функция"
// "5ый" символ можно использовать в качестве анимации. В данном случае повторяются последовательно POSSA0 и POSSB0 за 10 тиков. И вызывают функцию A_Look 2 раза.
// Символы спрайтов берем из IWAD, можно посмотреть в SLADE, ну и на вики посмотреть код других акторов.
// В думе понятие тиков: 35 тиков = 1 секунда.
// Функции можно взять с вики. В данном случае это функция, которая вызывает состояние See, когда цель увидет игрока.
POSS AB 10 A_Look
Loop // Делаем цикл для состояния спавна.
See: // Состояние "зрения". Начало другого состояния.
POSS AABBCCDD 4 A_Chase // В данном случае функция A_Chase, которая вызывается 8 раз за 4 тиков, ведет вражеского актора к игроку.
Loop
Melee: // Здесь пусто, потому что Melee пропускается, и вызывается сразу же Missile. При данном раскладе враг может атаковать даже вплотную к игроку. Если хотите сделать что-то типа "укуса", то можно эту функцию расшириь, сделав, например как следующая.
Missile: // Состояние атаки на дистанции.
POSS E 10 A_FaceTarget // Функция прицеливания в игрока.
POSS F 8 A_PosAttack // Стандартная атака зомби. Можно поменять, например на A_FireCustomMissile("Название любого актора фаерболла например")
POSS E 8 // Пусто, просто анимация, без функций.
Goto See // В данном случае, идет передарессация на состояние зрения.
Death:
POSS H 5
POSS I 5 A_Scream // Функция звука смерти.
POSS J 5 A_NoBlocking // Функция разблокировки в физическом смысле. Можно будет проходить сквозь труп.
POSS K 5
POSS L -1 // -1 в данном случае бесконечное количество тиков. Какбы данное действие остается навсегда, пока не смениться карта.
Stop // Остановка актора на последнем действии в текущем состоянии.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment