1. Нет штатного способа. Всё равно вакансия будет для четырёх. Скажем, ставь свитч, когда в команде уже есть один помощник, и если он стоит, то сделай, чтобы остальные и не пробовали присоединяться.
2. Я думаю, что стоит сделать глобальное событие (common event) — Parallel process. В нём добавь условное ветвление:
:УСЛОВНОЕ ВЕТВЛЕНИЕ, ЕСЛИ HP героя = 0
Удалить его из команды
Выключить switch, что он в команде
:КОНЕЦ ВЕТВЛЕНИЯ
(Можно ещё в конце добавить чего-то типа Подождать 0,1 или Подождать 0,2, если игра тормозит из-за слишком большого количества параллельных событий).
[cut]
Теоретически это можно было бы делать и в самой битве, но там нет глобальных событий, поэтому надо бы в каждой группе монстров прописывать один и тот же код.
[/cut]
Как вариант можно всех помощников, если они присоединяються только один раз, хранить как одного героя.
[cut]
Тогда при его присоединении проверяется, есть ли этот самый единственный герой в команде, устанавливается ему имя, лицо, работа... Ну и заодно switch - кто с тобой ходит (хотя можно и имя сравнивать). Тогда в Parallel process надо проверять всего лишь HP или состояние одного героя.[/cut]
3. Простейший вариант: при накидывании ауры добавляешь эту самую атаку, 20 единиц, ставишь свитч какой нибудь (можно назвать, скажем, аура атаки действует), запускаешь таймер на 5 минут.
Потом делаешь глобальное событие (common event), условием его появления ставишь switch (аура атаки действует), и в нём добавь условное ветвление:
:УСЛОВНОЕ ВЕТВЛЕНИЕ, ЕСЛИ на таймере осталось 0 секунд
Уменьшить атаку на 20
Снять свитч Аура атаки действует
:КОНЕЦ ВЕТВЛЕНИЯ
(В конце события тут желательно поставить что-то вроде Подождать 0.5 — учитывая промежутки в 5 минут, задержка в полсекунды заметна не будет
)
Проблемы с аурами начнутся, если тебе надо будет их много. Таймеров-то всего 2. Если можно за один раз наложить только одну ауру, то тогда надо просто ввести 2 свитча: аура (какая-то) действует и конкретно по аурам. Тогда уже событие вызывается по свитчу аура (какая-то) действует, а в самом событии проверяется, какая именно аура действует, и если это аура атаки, отнимается 20 атаки, если аура защиты — отнимается защита…
Если несколько аур могут действовать одновременно, то нехватку таймеров можно обходить.
С одной стороны, можно использовать один таймер для всех аур.
[cut]
Тогда количество секунд до конца действия ауры храниться в какой-то переменной, а таймер устанавливается на время действия самой короткодействующей ауры.
Есть переменные — сколько секунд осталось работать каждой ауре.
При установке проверяется уже работающий таймер; если он не работает или там времени больше, чем будет работать устанавливаемая аура, то тогда надо остановить таймер, отнять от всех перемнных (сколько осталось работать каждой ауре) время, которое таймер должен бы работать (куда-нибудь его сохранить), и прибавить время, которое осталось на нём, и запустить новый таймер: время колдуемой сейчас ауры (и устанавливаем переменную, сколько он должен проработать).
В глобальном событии параллельным процессом проверяется, не равны ли секунды на таймере нулю. Если равны... От всех переменных (сколько осталось работать каждой ауре) отнимается количество секунд, которое таймер проработал (берём из переменной, сколько он должен проработать).
Проверяем все ауры. Если время какой-то стало = 0, снимаем характеристику.
Потом проверяем все ещё работающие ауры и находим ауру с наименьшим оставшимся временем. Запускаем таймер на это время.
[/cut]
С другой стороны — можно использовать много глобальных событий и эмулировать таймер с помощью команды «Подождать»… Я сам не пробовал, но это может сработать.
Наверное непонятно получилось... _ Пример, как на зло, не сваяю, разве что на RM2000, так как 2003 под рукой нет. Если на 2000 сойдёт, могу сделать пример.