Обходя ограничения движка. Часть 2 — замена ID объектов
Суть идеи: если триггер не позволяет указать нужный ID объекта напрямую, значит нужно "вмешаться" в код в момент непосредственно перед началом выполнения триггерной команды.
Мне удалось найти связанную с триггерной командой функцию и перехватить ее. В точке перехвата можно подменить идентификатор объекта на произвольный — тот, который нужен мне.
Поверх этого делается надстройка: собственные функции из Engine Extension Framework, которые подставляют ID целевого объекта вместо стартового объекта, указанного в редакторе сценариев, в зависимости от моей игровой логики.
Идея была проверена на триггерных командах AddItemToUnit и RemoveItemFromUnit. В тестовом примере я добавил эффект, который отсутствует в оригинальном редакторе сценариев, всем юнитам, попавшим в область выбора области действия заклинания (хороший пример нетривиальной игровой механики):
Эксперимент подтвердил, что идея рабочая. В следующем посте расскажу немного технических деталей реализации, итоги, и почему это решение на самом деле является огромным шагом вперед.
In bundle
the third prophecy