Найти тему

Советы картостроителям в HOMM IV (3). Создаём герою уникальную способность.

Доброго времени суток, уничтожители компьютерных игроков. В сегодняшнем третьем уроке из цикла «Советы картостроителям в HOMM IV» мы придумаем для нашего героя необычную способность и реализуем её с помощью скриптов. Не будем тревожить яйца дракона, просто начнём!

Дар Мидаса
«Я готов исполнить любое твоё желание, о, спаситель, — молвил могущественный джинн — Но сделать свой выбор ты должен с умом, ведь…
— Молчать, синяк! Ты мешать моя думать… Что хочут варвар? Варвар хочут убивать и много-много золота…
*извилины скрипят по-варварски*
— …Точно, пусть трупы моих врагов делаются золотом!
— Но не проще ли сразу пожелать бесконечно много…
— Захлопни котелок!!! Делай, как моя сказал!

Это была лирика, теперь перейдём к сути. Как вы могли понять, способность позволяет получить золото за убитых армией героя врагов. Пусть, баланса ради, каждое убитое существо будет приносить, скажем, 25 золота.

  1. Заходим в «Свойства героя» (именно героя, это важно!) → «Скрипты» → «Обнаружение» → создаем численную переменную «Midas_army» и устанавливаем ей значение «Общее количество существ во вражеском отряде».
Благодаря этому игра будет знать общее количество существ у врага, когда мы войдём в бой.
Благодаря этому игра будет знать общее количество существ у врага, когда мы войдём в бой.

2. Заходим в «Свойства героя» → «Скрипты» → «Победа» → создаем условие (если «Midas_army» > 25 то запустить триггер «Midas_check»).

Тем самым мы добавляем дополнительное условие для срабатывания: во вражеской армии должно быть больше 25 существ. Наш герой не разменивает себя на мелочовку!
Тем самым мы добавляем дополнительное условие для срабатывания: во вражеской армии должно быть больше 25 существ. Наш герой не разменивает себя на мелочовку!

3. После победы над врагом необходимо дать игроку столько золота, сколько он захочет убил существ, умноженное на 25. Для этого мы создаём триггер «Midas_check», который закольцован сам в себя, т.е. он будет самовызываться, пока не выполнит определённые условия. А конкретно, (если «Midas_army» ≥ 25, то отнять от «Midas_army» 25, и дать красному игроку 625 золота).

Окно триггера «Midas_check». Так всё выглядит «на бумаге».
Окно триггера «Midas_check». Так всё выглядит «на бумаге».

Мы выплатили игроку 625 золота единожды, но почти наверняка вражеских существ будет больше, нежели 25 (а на меньшее кол-во триггер не срабатывает). Работаем дальше.

4. В триггере создаем второе условие («Midas_army» ≥ 25) и запускаем триггер «Midas_check». Теперь мы закольцевали его, и триггер будет выполнять сам себя, пока не выплатит «красному» всё до последней копейки. Он завершит свою работу в цикле, когда остаток достигнет числа ≤ 25.

Nota bene: Для чего мы вообще сделали привязку к 25 существам? Увы, совершать вычисления по 1 существу — слишком ресурсозатратно. Игра не заточена под такие тонкие операции, поэтому мы облегчаем работу и себе, и ей. Делаем запуск триггера намного реже. Если у врага 100 существ — триггер запустится всего 4 раза. Тестил на 10 000 существах — результатом стал небольшой лаг длиной в секунду, а это хороший показатель.

5. Теперь мы можем поделиться нашей способностью с игроком, отметив её в описании героя, или там, где нам вздумается.

Наш урок о создании нестандартной способности подошёл к концу. В будущем я покажу вам другие, не менее интересные. А пока что пока. Экспериментируйте и вдохновляйтесь! До новых встреч!

Если хочешь и дальше узнавать об интересных проектах во вселенной "Героев Меча и Магии 4" - подпишись на нашу группу ВК!
https://vk.com/homm_creator