GraveRun

GraveRun

Not enough ratings
Создание врагов
By Vlad Dae and 1 collaborators
Как добавить в свой мод нового врага
   
Award
Favorite
Favorited
Unfavorite
Введение
Необходимый минимум для добавления нового врага:
  1. Создать папку Enemies в корне мода.
    GaveRun/LocalMods/ИмяМода/
  2. Создать папку с именем врага в
    GaveRun/LocalMods/ИмяМода/Enemies/
  3. Добавить в эту папку изображения.
  4. Создать в корне мода файл Enemies.opt, и описать в нём настройки.

Будьте внимательны, содержимое и названия всех файлов чувствительно к регистру.
Спрайты
Все файлы, которые относятся к определённому врагу, должны начинаться с его имени и находиться в соответствующей папке.
\LocalMods\ModName\Enemies\Deer\Deer_Run.png

В случае, если какой-то спрайт не задан, но должен использоваться, будет загружен соответствующий спрайт-заглушка:






Список спрайтов, которые возможно задать для врагов:
  1. Анимация бега.

    LittleZombie_Run.png
    Имя файла должно заканчиваться на "_Run.png"

  2. Анимация смерти.

    LittleZombie_Dying.png
    Имя файла должно заканчиваться на "_Dying.png"

  3. Труп.

    LittleZombie_Corpse.png
    Анимацией делать бессмысленно.
    Имя файла должно заканчиваться на "_Corpse.png"

  4. Падение.

    LittleZombie_Fly.png
    Анимация, которая проигрывается, когда враг летит вниз. В данном случае это один кадр. Если данный спрайт не задан, будет использован спрайт ходьбы.
    Имя файла должно заканчиваться на "_Fly.png"

Количество кадров в анимациях может быть любое. Скорость воспроизведения анимации задаётся в Enemies.opt.

http://steamcommunity.com/sharedfiles/filedetails/?id=1170525139
Параметр: Sprite spriteName Delay = time
Синтаксис
Sprite ИмяСпрайта Delay = Время

Описание
Задаёт задержку между кадрами анимации в миллисекундах.

Варианты спрайтов:
  • Run
  • Dying

Пример
Sprite Run Delay = 180
Файл Enemies.opt
Для создания врага используется единственная команда "------- Load Enemy". Если в вашем моде создается несколько видов врагов, то для каждого из них эта команда используется повторно.

Параметры, перечисленные после указанной команды, будут считываться построчно, пока не будет встречена пустая строка, которая означает конец перечисления параметров для данного врага.
Команда Load Enemy
Синтаксис
------- Load Enemy Параметр = Значение Параметр = Значение, Значение И т.д.

Описание
Создает нового врага в базе данных, со стандартными значениями всех параметров.
Команда считывает строки параметров, пока не натолкнется на пустую, которая означает конец перечисления параметров для данного врага.

Обязательный параметр, задающий название врагу - Name.
Во всех остальных случаях, если какой-либо параметр не задан, то будет использоваться его значение по-умолчанию.

Примеры:
LittleDog ------- Load Enemy Name = LittleDog SxNorm = 450 SpeedSpray = 150 SpeedSprayY = 50 HP = 20 Image = LittleDog AddDamageZone = 3, 6, 200
Медведь ------- Load Enemy Name = Bear SxNorm = 300 SpeedSpray = 50 SpeedSprayY = 30 HP = 230 AI = 2 Kick = 20 AddDamageZone = 6, 12, 150
Дед Мороз. Босс ------- Load Enemy Name = Boss_DeadMoroz SxNorm = 250 HP = 2500 Image = Boss_DeadMoroz LootChance = 0 ShowHP = 1 AddDamageZone = 3, 17, 150 AddOnDeathDo = Explosion, 500 AddOnDeathDo = AddBlood, 100 CanBeBashed = 0 AI = 2 Mass = 500 SpawnListAdd = SleepFor, 2000, 0 SpawnListAdd = Enemy, Deer_Spawned SpawnListAdd = Enemy, Deer_Spawned SpawnListAdd = Enemy, Deer_Spawned SpawnListAdd = Enemy, Deer_Spawned
Обязательный параметр: Name
Синтаксис
Name = Текст

Описание
Это обязательный параметр.
Задаёт название врага. Если есть несколько врагов с одинаковым названием, то будет использоваться тот, который находится в файле Enemys.opt выше.

Название должно состоять только из латинских букв.

Пример
Name = LittleZombie
Параметр: Speed
Синтаксис
Speed = Число

Описание
Скорость передвижения врага.

По умолчанию 100.

Пример
Speed = 250
Параметр: SpeedSpray
Синтаксис
SpeedSpray = Число

Описание
Разброс скорости врага.

По-умолчанию 30.

Пример
SpeedSpray = 75
Eсли Speed = 100, то враг будет иметь случайную скорость от 25 до 175.
Параметр: Image
Синтаксис
Image = Название

Описание
Это префикс имени группы файлов относящихся к этому врагу:
  • ***_Run - враг бежит (MediumZombie_Run.png)
  • ***_Stay - враг стоит (MediumZombie_Stay.png)
  • ***_Dying - враг умирает (MediumZombie_Dying.png)
  • ***_Corpse - спрайт трупа (MediumZombie_Corpse.png)
  • ***_Fly - спрайт полета (MediumZombie_Fly.png)
Название должно состоять только из латинских букв.
Все картинки должны быть в формате .png.

По-умолчанию используется название из параметра Name.
Если спрайт ***_Run.png не удается загрузить, то будет загружен NoImage_Run.png.

Пример
Image = MediumZombie
Параметр: ShowHP
Синтаксис
ShowHP = 1\0

Описание
Постоянное отображение полоски жизни под врагом.
  • 1 - Да (Используется у боссов).
  • 0 - Нет.
По-умолчанию 0.

Пример
ShowHP = 1
Параметр: Loot
Синтаксис
Loot = Название

Описание
Назначает, что выпадет из зомби после его смерти.

Ящики с улучшениями, где сначала указывается размер:
  • Little - Маленький.
  • Medium - Средний.
  • Big - Большой.
А потом, через пробел, варианты содержимого:
  • RndBox - Случайный ящик с бонусом или аптечкой.
  • FastReload - Бонус "Быстрая перезарядка".
  • FastShoot - Бонус "Быстрая стрельба".
  • Damage - Бонус "Увеличение урона".
  • Heal - Аптечка.
Ящики с оружием:
  • RndWeap - Ящик со случайным оружием с DropPrecent (из файла Weapons.opt) больше нуля.
  • Название - Ящик с определенным оружием. Указывается название оружия (параметр Name) из файла Weapons.opt.
Не процентные бонусы:
  • RndBonus - падает Vehicle Jeep, либо Bullettime.
  • Bullettime - падает бонус Bullettime.
Транспорт:
  • Vehicle Имя - Выпадает выбранный транспорт

Можно указывать любые комбинации перечисленного, через запятую. В таком случае из врага выпадет один из перечисленных вариантов.

По-умолчанию, выпадает Medium RndBox или Little RndBox.

Пример
Loot = Little FastShoot, Little Heal, RocketLauncher, DesertEagle
Параметр: LootChance
Синтаксис
LootChance = Число

Описание
Процентная вероятность выпадения лута при смерти.
  • 0 - Лут не выпадает.
  • 100 - Выпадает всегда.
По-умолчанию 2.5%.

Пример
LootChance = 0
Параметр: HighlightIt
Синтаксис
HighlightIt = 0\1

Описание
Рисовать ли красную подсветку врага.

По умолчанию 0.

Пример
HighlightIt = 1
Параметр: Hopping
Синтаксис
Hopping = Число1, Число2

Описание
Делает врага прыгающим.
  • Число1 - Сила прыжка.
  • Число2 - Задержка, в миллисекундах, между прыжками.
По умолчанию враги не прыгают.

Пример
Hopping = 250, 4000
Параметр: AddDamageZone
Синтаксис
AddDamageZone = Число1, Число2, Число3

Описание
Добавляет врагу уязвимые места спереди.

Координаты считаются по спрайту, сверху вниз:
  • Число1 - С какого пикселя, включительно, начинается зона.
  • Число2 - Где заканчивается.
  • Число3 - Процент урона при попадании в это место.
Этих строк может быть несколько, если нужно обозначить несколько зон.

По умолчанию уязвимых зон нет.

Пример
AddDamageZone = 0, 5, 200
При попадании в голову (которая на картинке в данном случае от 0 до 5 пикселей) враг получит двойной урон.
Параметр: AddBackDamageZone
Синтаксис
AddBackDamageZone = Число1, Число2, Число3

Описание
Тоже самое, что и AddDamageZone, только сзади.

По-умолчанию этих зон нет.

Пример
AddBackDamageZone = 6, 20, 50
При попадании в спину (спина на картинке в данном примере от 6 до 20 пикселей), враг получит вдвое меньше урона.
Параметр: SpawnListAdd
Синтаксис
SpawnListAdd = Название

Описание
Раз в какое-то время (устанавливается при помощи SleepFor) монстр что-то делает.
Этих строк может быть несколько.
Работает SpawnList как сценарий уровня, построчно выполняя строки.
  • Barel - Создает перед собой бочку.
  • Explosion, Число - Делает взрыв, в значении указывается сила взрыва.
  • Enemy, Название - Создает нового врага. В значении указывается имя этого врага.
  • AddBlood, Число - Из монстра хлещет дополнительная кровь. В значении указывается ее количество.
  • SleepFor, Число1, Число2 - Задержка (Как Delay в создании уровней).
    Число1 - Сколько миллисекунд ждём
    Число2 - Разброс значения (Число1±Число2)
    Это значит, что программа ждет какой-то диапазон времени, в заданных рамках, потом переходит к следующей строке SpawnListAdd.

Когда строки заканчиваются - сценарий повторяется.

По-умолчанию ничего не создает.

Примеры
SpawnListAdd = Enemy, LittleHopper SpawnListAdd = Enemy, LittleHopper SpawnListAdd = Enemy, LittleHopper SpawnListAdd = SleepFor, 1000, 500
Мы ждём от половины до полутора секунд прежде чем этот враг создаст перед собой трёх LittleHopper.

SpawnListAdd = Explosion, 1500
Взрывается с уроном 1500.
Параметр: MaxSpawnedChilds
Синтаксис
MaxSpawnedChilds = Число

Описание
Максимальное количество врагов, которое может призвать данный, если умеет.
Возможность даётся параметром SpawnListAdd.

По умолчанию 20.

Пример
MaxSpawnedChilds = 10
Параметр: AddOnDeathDo
Синтаксис
AddOnDeathDo = Текст

Описание
Добавляет действие врага при смерти.
Этих строк может быть несколько.
  • Barel - На месте смерти появляется бочка.
  • Explosion, Число - На месте смерти случается взрыв, в значении указывается сила взрыва.
  • Enemy, Название - На месте смерти появляется другой враг. В значении указывается имя этого врага (параметр Name).
  • AddBlood, Число - Из монстра хлещет дополнительная кровь. В значении указывается ее количество.

По-умолчанию ничего не делает (Лут не считается).

Пример
AddOnDeathDo = Barel
Параметр: Weapon
Синтаксис
Weapon = Название Weapon Параметр = Значение

Описание
Выдаёт врагу оружие. В значении указывается кодовое название оружия (Name) из файла Weapons.opt.
Так же этой же командой можно задавать выданному оружию параметры.

Если второе "слово" это "=" - то задаём само оружие
Иначе задаём параметр оружия. Отправляем без первого "слова" (которое "Weapon") в обработку так, будто это параметр команды создания оружия

По-умолчанию оружия нет, враг будет наносить игроку урон толкая.

Пример
Weapon = Claws Weapon = Glock Weapon Damage = 45
Параметр: HandPosition
Синтаксис
HandPosition = x, y, z

Описание
Задаёт точку от хэндла врага, в которой будет рисоваться оружие.

По умолчанию HandPosition = ширина/4, 0, высота/2

Пример
HandPosition = 5, 0, 10
Параметр: Kick
Синтаксис
Kick = Число

Описание
Сила и урон, с которыми враг толкает игрока.

По-умолчанию 10.

Пример
Kick = 20
Параметр: ShootDelay
Синтаксис
ShootDelay = Число

Описание
Секунды между "нажатиями на курок", если у врага есть оружие.

Пример
ShootDelay = 2.4
Параметр: ShootDelaySpray
Синтаксис
ShootDelaySpray = Число

Описание
Разброс времени в процентах, между "нажатиями на курок".

По-умолчанию 50.

Пример
ShootDelaySpray = 20
ЕслиShootDelay = 2.4, тогда пауза между нажатиями будет от 1.92 до 2.88 секунд.
Параметр: GiveExp
Синтаксис
GiveExp = 1\0

Описание
Даются ли очки опыта за этого врага.

По умолчанию 1.

Пример
GiveExp = 0
Параметр: FlyControl
Синтаксис
FlyControl = Число

Описание
Способность управлять полетом, в процентах.
  • 0 - враг не контролирует свой полёт.
  • 100 - враг может менять направление, как при ходьбе.
По умолчанию 0.

Пример
FlyControl = 80
Параметр: FlySpeed
Синтаксис
FlySpeed = Число

Описание
Скорость, с которой враг двигается в воздухе, например после прыжка.

По-умолчанию равняется параметру Speed (обычная скорость) для данного врага.

Пример
FlySpeed = 70
Параметр: NotEnemyForNPC
Синтаксис
NotEnemyForNPC = 0\1

Описание
Если равно 1, то врагом для NPC не считается.
НПС не будут атаковать данную цель.
В противном случае будут.

По умолчанию 0.

Пример
NotEnemyForNPC = 1
Параметр: NoClipForBullets
Синтаксис
NoClipForBullets = 0\1

Описание
Если 1 - то снаряды и взрывы проходят сквозь врага без урона, игнорируя его.

По умолчанию 0.

Пример
NoClipForBullets = 0
Параметр: Bashed
Синтаксис
Bashed = Число

Описание
Сколько миллисекунд ещё будет длиться оглушение у врага.

По умолчанию 0.

Пример
Bashed = 4000
Параметр: CanBeBashed
Синтаксис
CanBeBashed = 1\0

Описание
Может ли враг получить оглушение от взрыва.

По умолчанию 1.

Пример
CanBeBashed = 0
Параметр: InfiniteFire
Синтаксис
InfiniteFire = 1\0

Описание
Если 1 - то враг не тухнет.
Стоит учесть, что параметр при этом не поджигает врага, а лишь даёт возможность бесконечно гореть.

По умолчанию 0.

Пример
InfiniteFire = 1
Параметр: Ignite
Синтаксис
Ignite = Число

Описание
Поджигает врага с указанной силой.

Пример
Ignite = 50
Параметр: FireDamageMultiplier
Синтаксис
FireDamageMultiplier = Число

Описание
Множитель урона от горения.

По умолчанию 1.

Пример
FireDamageMultiplier = 2
Параметр: FlankingChance
Синтаксис
FlankingChance = Число

Описание
Какой шанс, в процентах, на включение фланкинга.

По умолчанию 100.

Пример
FlankingChance = 20
Параметр: BloodColor
Синтаксис
BloodColor = r, g, b

Описание
Задаёт цвет крови

Каждая капелька крови немного рандомится (+-20 единиц для каждого значения)

По умолчанию 148, 22, 41.

Пример
BloodColor = 6, 76, 128
Параметр: DeathSound
Синтаксис
DeathSound = Текст

Описание
Загружает звук смерти из папки мода Enemies

Имя необходимо указывать без расширения. Расширение подбирается само .wav или .ogg

В папке может быть несколько звуков, один из которых должен проигрываться случайным образом. В этом случае у звуков должен быть суффикс с цифрой.
WoodCrack_1
WoodCrack_2

По умолчанию выставляется общий звук из папки
LocalMods\MainGame\Enemies\Death

Пример
DeathSound = WoodCrack
Параметр: Kill
Синтаксис
Kill Имя

Описание
Убить врага с указанным именем.

Пример
Kill Kenny
Параметр: Ability abilName do
Синтаксис
Ability abilName do

Описание
Выполняет действие со списком способностей врага

Варианты способностей:
  • Throw
    Что можно сделать в do:
    • Add - Добавляем врагу способность кидаться со стандартными параметрами
    • TrowAt - Номер кадра, на котором происходит бросок. По умолчанию - 99. Если эта цифра больше, чем кол-во кадров анимации, то бросает на последнем кадре.
    • AbilDelay - Сколько миллисекунд проходит между бросками. По умолчанию - 1000.
    • MaxTargDist - Максимальная дистанция до цели. По умолчанию 600.
    • MaxDist - На какой максимальной дистанции проверяется забирание предмета. По умолчанию = 50.
    • Sound - Если 0 - то звук не воспроизводится. По умолчанию = 1.
    • ThrowSelf - Если 1 - то кидает сам себя. По умолчанию = 0.
    • ThrowPlayer - Если 1 - то кидает игрока в ближайшего врага. По умолчанию = 0.
  • Aim
    Что можно сделать в do:
    • Add - Добавляем врагу способность со стандартными параметрами
    • Target, targetName - Задаём конкретную цель
      Варианты targetName:
      • NPC, конкретноеИмяНПСА - Ближайший НПС с подходящим именем
      • Vehicle, конкретноеИмя - Ближайший с подходящим именем
    • MaxAngle - Максимальный угол прицеливания относительно лица зомби. При 35 он сможет стрелять только перед собой вверх наискосок или перед собой вниз наискосок. При 180 в любую сторону, даже назад. По умолчанию = 45
    • AngleChangeStep - Размер ступени прицеливания. Если 1 - то может корректировать свой угол стрельбы каждый градус. Если 45 - то сможет стрелять только наискосок и прямо. По умолчанию = 45.
    • AimWho - В кого целится. По умолчанию = Human. Кроме как Human пока вариантов нет. Human - выцеливает ближайшего живого человека.
  • Berserk
    Что можно сделать в do:
    • Add - Добавляем мобу способность со стандартными параметрами.
    • MinHPToSwitch - При каком ХП включается берсерк. 0 - если ХП = 0. 1 - Если ХП = 100%. По умолчанию = 0.5. Значит по умолчанию включается на 50% хп.
    • MaxHPToSwitch - При каком уровне ХП переключается обратно. По умолчанию = 0.9. При 90%

    Пример
    Ability Berserk Add Ability Throw MaxTargDist = 600 Ability Aim AngleChangeStep = 45
Параметр: AIName
Синтаксис
AIName = Текст

Описание
Тип интеллекта врага:
  • 0 - Стоит на месте, если указать ему куда-либо идти, то передвигается не обращая внимания на игрока.
  • 1 - Идёт, как оглушённый.
  • 2 - Убийца: вне зависимости от обстоятельств идёт на игрока.
  • 3 - Устремлённый: пытается пройти уровень, не обращая внимания на игрока.
  • 31 - Супер-устремлённый: идет строго прямо, не уклоняясь. Пытается пройти уровень, не обращая внимания на игрока и препятствия.
  • 4 - Трус: пытается пройти уровень, но убегает от игрока.
  • 5 - Агрессивный: пытается пройти, но при виде игрока пытается его убить.
По-умолчанию 5.

Пример
AIName = 2
Общий параметр: HP
Синтаксис
HP = Число

Описание
Устанавливает одновременно и текущее и максимальное количество ХП

На этот параметр действует функция calculate.

Пример
HP = 22
Общий параметр: x
Синтаксис
x = Число

Описание
Координата в мире от верхнего левого угла карты.

По умолчанию 0.

Пример
x = 250
Общий параметр: y
Синтаксис
y = Число

Описание
Координата в мире от верхнего левого угла карты.

По умолчанию 0.

Пример
y = 300
Общий параметр: z
Синтаксис
z = Число

Описание
Чем больше цифра, тем выше над уровнем земли объект.

По умолчанию 0.

Пример
z = 50
Общий параметр: sz
Синтаксис
sz = Число

Описание
Чем больше цифра, тем выше вертикальная скорость (вверх) объекта.

По умолчанию 0.

Пример
sz = 9000
Общий параметр: w
Синтаксис
w = Число

Описание
Ширина объекта. Она же и диаметр круга коллижна.

По умолчанию 10.

Пример
w = 15
Общий параметр: FaceTo
Синтаксис
FaceTo = -1\1

Описание
Задаёт направление для НПЦ/врага.
  • -1 лицом влево
  • 1 вправо
По умолчанию -1.

Пример
FaceTo = -1
Общий параметр: Weight
Синтаксис
Weight = Число

Описание
Устанавливает массу врага. От этого параметра зависит только то, насколько он быстро падает.

По-умолчанию 50.

Пример
Weight = 30
Общий параметр: h
Синтаксис
h = Число

Описание
Задаёт высоту объекта.

По умолчанию 10.

Пример
h = 30
Общий параметр: InviolabilityRemain
Синтаксис
InviolabilityRemain = Число

Описание
Задаёт сколько миллисекунд объект ещё будет неуязвим.

По умолчанию 0.

Пример
InviolabilityRemain = 200
Общий параметр: Remove
Синтаксис
Remove

Описание
Удаляем объект с указанным именем.

Пример
Remove bot1
Общий параметр: Tooltip или Bubble
Синтаксис
Bubble, 3000

Описание
Создаёт бабл или тултип с текстом, удаляя прошлое сообщение, которое висело на объекте.

Tooltip или Bubble - от этого зависит вид сообщения. Тултипы появляются снизу объекта, баблы сверху.

После запятой - время жизни в миллисекундах. Если 0 - то бесконечно.

Дальше идёт две строки с текстом.
RUS
ENG

В тексте можно использовать теги:
  • [n] - Перенос строки.
  • [!] - Восклицание. Буквы прыгают.
  • [/!] - Закрываем восклицание.
  • [Movement],[Pause],[Fire],[FireSecondary],[Switch],[BulletTime],[Turn],[GetOut],[Aim],[Dash] - Рисует в тексте пиктограммку забинденного на это действие управления.
  • [FastSpeed], [NormalSpeed], [SlowSpeed] - Скорость появления букв текста дальше этого тега.
  • [Name] - Добавляет имя игрока.
Пример
Bubble, 3000 [!]&?#@%! rus [!]&?#@%! eng
Общий параметр: DeathScenario
Синтаксис
DeathScenario:

Описание
Устанавливает посмертный сценарий для объекта.

Максимальное количество строк сценария - 100.

Сценарием устанавливаются строчки между строками:

DeathScenario:
и
DeathScenario End

Пример
NPC, OniiChan, DeathScenario: NPC, Catgirl, Bubble, 10000 Ня! Nya! DeathScenario End

При смерти НПЦ OniiChan, другой НПЦ, Catgirl, скажет "Ня!" или "Nya!" в зависимости от языка игры.
Бабл с текстом будет висеть 10 секунд.