Создание Своих Квестов для Игры

Reading Mode

Продвинутый

Часть 10. Спавн и Ко

До этого мы использовали мобов, которых игра спавнила «естественным» образом, но что делать, если мы хотим заспавнить нужного моба здесь и сейчас? Для этого мы будем использовать <spawn>

Спавн

Синтаксис

<spawn mob="ИмяМоба" distance="15" angry="false" />
АтрибутОбязательныйЗначение
mobДаСистемное имя моба
distanceНет (неявно = “5”)Расстояние в блоках, на котором появится моб. Всегда в направлении взгляда игрока, изменить это нельзя
angryНет (неявно = “false”)Если = “true”, то абсолютно ВСЕ нейтральные мобы становятся агрессивными. Даже те, которые заспавнились «естественным» путем. Используйте в сочетании с <clearmobs />
В игре: Используется в битве с Алхимиком за Свиток Забвения

В минимальном рабочем виде тег выглядит так: <spawn mob="ИмяМоба" />

Важно
1. Используется только внутри <option>
2. Выносите спавн и выдачу заданий в отдельные шаги:

<step id="spawn_step">
<option auto="hunt_step" check="0.5">
  <spawn mob="Spider" distance="3" />
  <spawn mob="Spider" distance="5" />
  <spawn mob="Spider" distance="7" />
</option>
</step>

<step id="hunt_step">
<info>
  <label>Убейте 3 пауков:</label>
  <kill enemy="Spider" count="3" />
</info>
<option auto="reward_step" check="0.5">
  <kill enemy="Spider" count="3" />
</option>
</step>

3. Спавн тоже лучше делить на отдельные шаги, спавнящие мобов пачками по 3 штуки:

<step id="spawn_spider_step">
  <option auto="spawn_skeleton_mage_step" check="0.5">
    <spawn mob="Spider" distance="3" />
    <spawn mob="Spider" distance="5" />
    <spawn mob="Spider" distance="7" />
  </option>
</step>

<step id="spawn_skeleton_mage_step">
  <option auto="spawn_other_mobs_step" check="0.5">
    <spawn mob="SkeletonMage" distance="1" />
    <spawn mob="SkeletonMage" distance="6" />
    <spawn mob="SkeletonMage" distance="9" />
  </option>
</step>

<step id="spawn_other_mobs_step">
  <option auto="hunt_step" check="0.5">
    <spawn mob="SnowBigWorm" distance="4" />
    <spawn mob="SwampSnake" distance="8" />
    <spawn mob="Snake" distance="12" />
  </option>
</step>

4. Гарантированно заспавнить за раз можно только 3 мобов одного типа. Если попытаться последовательно заспавнить 4+ (даже в разных шагах) мобов, то заспавнится случайное количество от 3 до указанного кол-ва мобов. Следовательно, не спавните больше 3 штук, если не хотите лишних проблем
5. Если мобы всё еще не спавнятся, то добавьте задержку (<delay sec="ВремяВСекундах" />) перед каждым <spawn />

Очистка мобов

Для очистки ВСЕХ мобов используем тег без атрибутов <clearmobs />. Нужен, чтобы очистить мобов в мире и чтобы не упереться в лимит мобов.
Размещать его можно как в кнопке:

<step id="prebattle_dialog_step">
  <desc>Привет!</desc>
  <option to="battle_spawn_step">
    <clearmobs /> 
  </option>
</step>

Так и перед спавном мобов:

<step id="spawn_spider_step">
  <option auto="spawn_other_mobs_step" check="0.5">
    <clearmobs />
    <spawn mob="Spider" distance="3" />
    <spawn mob="Spider" distance="5" />
    <spawn mob="Spider" distance="7" />
  </option>
</step>

<step id="spawn_other_mobs_step">
  <option auto="hunt_step" check="0.5">
    <spawn mob="SnowBigWorm" distance="4" />
  </option>
</step>

Управление естественным спавном

Справка
С помощью тега <spawnmobs /> можно включать\отключать «естественный» спавн мобов в мире, т.е. тех, что спавнятся сами по себе. С помощью <spawn /> своих мобов все еще можно спавнить
Имеет только 1 атрибут: value со значениями true или false, где
true — включить естественный спавн
false — отключить естественный спавн

Пример

<spawnmobs value="false" />
<spawnmobs value="true" />

Важно
1. Используется только внутри <option>
2. Не забудьте включить спавн обратно, иначе мир навсегда останется пустым

Использование
Отлично работает в сочетании с <clearmobs /> по схеме:
1. Очищаем всех мобов (<clearmobs />)
2. Отключаем естественный спавн (<spawnmobs value="false" />)

<step id="spawn_spider_step">
  <option auto="spawn_other_mobs_step" check="0.5">
    <clearmobs />
    <spawnmobs value="false" />
    <spawn mob="Spider" distance="3" />
    <spawn mob="Spider" distance="5" />
    <spawn mob="Spider" distance="7" />
  </option>
</step>

<step id="spawn_other_mobs_step">
  <option auto="hunt_step" check="0.5">
    <spawn mob="SnowBigWorm" distance="4" />
  </option>
</step>

Проверка наличия моба

Для проверки, жив ли моб, используется тег <existmobs/> внутри <option>. С помощью него можно узнать, сбежал ли босс, или не убили ли квестового NPC

Атрибут (или тег)ОбязательныйЗначение
nameДаСистемное имя моба
inverseНет (это пустой вложенный тег)Инвертирует условие. Если указан, то условие выполнится, когда целевого моба НЕТ
Это вложенный тег, а не атрибут!

Использование:
Сработает, если в видимых (прогруженных) чанках есть живая Паула

<option auto="paula_alive" check="0.5">
  <existmobs name="FemaleWarrior" />
</option>

Сработает, когда Паулы нет в видимых чанках (Например, если её убили. Не важно кто, даже если агрессивный моб или сама умерла)

<option auto="paula_dead" check="0.5">
  <existmobs name="FemaleWarrior">
    <inverse/>
  </existmobs>
</option>

Задания

1. Скелеты
Создайте квест от Паулы, в котором по нажатию кнопки «БОЙ» спавнятся: 3 Скелета-Мага, 3 Скелета-Потрошителя и 3 Скелета-Рыцаря. Перед их спавном отключается естественный спавн мобов и очищаются все мобы. За победу дается 250 опыта и 15 Зелий Маны. После победы повторно очищается арена и включается спавн мобов

2. Три Дракона
Сделайте квест-битву от Теда с 3 драконами: Ашкор, Ледяной и Огненный (Адский). Если один из этих мобов уже присутствует в мире, то выведите уведомление: «В мире есть [ИмяДракона]», после чего очистите мобов. Если драконов несколько, то выводится несколько уведомлений подряд. После вывода всех уведомлений, очистите всех мобов и начните битву (спавн всех троих + задание на убийство каждого из них)
Если ни одного из драконов нет, то выведите уведомление: «Драконов нет» и начните битву
Награда: 50 Гравитона и 400 опыта

3. Герой
Сделайте квест от Женщины-крестьянки. Она просит защитить мужа (мужчина-крестьянин) от нескольких волн оборотней. После принятия квеста, очищаются все мобы, отключается спавн мобов, спавнится мужчина-крестьянин и Первая Волна оборотней.
Если мужчина-крестьянин умирает, то квест проваливается, выводится уведомление «Квест провален», после чего квест завершается без права на перепрохождение. Можно использовать несколько отдельных .XML файлов
Волны:
1. 3 Оборотня
2. 3 Оборотня и 1 Темный Оборотень
3. 3 Оборотня и 3 Темных Оборотня
Награда: 40 хлеба и 200 опыта

3
0

Leave a Reply