Void commandDoSpell( sUnitName, nSpellID, nX, nY )

Аналог UnitCastAreaSpell.

void commandShot( sUnitName, sVictimName, bDontShowScene = false )

Функция заставляет юнит с именем sUnitName выполнить выстрел по юниту sVictimName. Если последний параметр true, то соответствующая кинематографическая сценка «юнит натужно замахивается и что-то кидает» показана не будет. По своим стрелять нельзя. При отсутствии снарядов стрелять нельзя. Оба случая приводят к ошибке скрипта.

void commandMove( sUnitName, nX, nY, bCheckPath = false )

Функция заставляет юнит с именем sUnitName переместиться на клетку с указанными координатами. Если последний параметр true, то будет учитываться длина хода юнита. При нехватке хода юнит с места не сдвинется, а вызов функции приведет к ошибке. Если клетка недостижима (т.е. занята другим юнитом или на пути к ней есть непреодолимые препятсятвия), то в любом случае никто никуда не пойдет, а вызов функции приведет к ошибке. Функция имеет алиас с именем MoveCombatUnit.

void commandMoveAttack(sAttacker, sVictim, nX = -1, nY = -1, bCheckPath = false)

Функция заставляет юнит с именем sUnitName атаковать юнит sVictim в melee режиме. Если указаны положительные координаты, то юнит сначала дойдет до требуемой клетки, а потом произведет атаку с нее (да-да, несмотря на то, что melee, и между юнитами пол-поля – ударит, да еще и сдачи получит). В противном случае юнит подбежит к атакуемому вплотную. Если последний параметр true, то будет учитываться длина хода юнита. При нехватке хода юнит с места не сдвинется, а вызов функции приведет к ошибке. Если клетка недостижима (т.е. занята другим юнитом или на пути к ней есть непреодолимые препятсятвия), то в любом случае никто никуда не пойдет, а вызов функции приведет к ошибке. Функция имеет алиас с именем AttackCombatUnit.

void commandDoSpecial(sUnitName, nAbilityID, nX = -1, nY = -1, bCheckPath = false)

Функция заставляет юнит с именем sUnitName использовать спецспособность по клетке с указанными координатами (если они заданы – некоторые спецспособности не требуют координат). Если последний параметр true, то будет учитываться длина хода юнита. При нехватке хода юнит с места не сдвинется, а вызов функции приведет к ошибке. Если клетка недостижима (т.е. занята другим юнитом или на пути к ней есть непреодолимые препятсятвия), то в любом случае никто никуда не пойдет, а вызов функции приведет к ошибке. Константы ABILITY_* nAbilityID прописаны в /scripts/combat-startup.lua, приводить полный список не буду. На этот раз не из-за большого объема. А из-за того, что они там некорректные. Нормальные значения констант SPELL_ABILITY_* нужно смотреть в файле /types.xml. Принципиальных ограничений на использование «неродных» абилок, в принципе, нет – так, например, суккуб вполне может изображать BATTLE_DIVE. Однако, все возможные сочетания я, конечно, не проверял.

Функция имеет алиас с именем UseCombatAbility.

Void displace( sUnitName, nX, nY )

Функция мгновенно телепортирует юнит на требуемую клетку. Никакими эффектами процесс не сопровождается. Если клетка уже занята кем-либо или чем-либо, то вызов функции приведет к ошибке.

Функция имеет алиас с именем SetCombatPosition.

void playAnimation( sUnitName, sAnimType, nActionTypeID = ONESHOT )

Функция заставляет юнит с именем sUnitName проигрывать анимацию sAnimType способом nActionTypeID. Возможные sAnimType следует смотреть в xdb файле определения анимации для существ. Например, для импов это файл _(AnimSet)\Creatures\Inferno\Imp-arena.(AnimSet).xdb. Как правило, анимация типа «death» существует для всех. Остальное зависит от типа существа. Константы для nActionTypeID прописаны в /scripts/combat-startup.lua и могут быть

IDLE = 1 -- проигрывается циклически

ONESHOT_STILL = 2 -- проигрывается один раз, и последний фрейм фиксируется

ONESHOT = 3 -- проигрывается один раз, потом юнит возвращается в прежнюю позу

NON_ESSENTIAL = 5 -- не знаю, что такое.

Void combatPlayEmotion( nSideID, n1 )

Функция заставляет юниты стороны nSideID проигрывать эмоцию. Полагаю, второй параметр должен определять ее тип, но эксперименты ничего не дали – независимо от значения параметра все ведут себя одинаково – радуются и чего-то голосят.

Void RemoveAllUnits()

Функция удаляет все стеки с поля боя. У обоих сторон. Ввиду чего полезность ее под вопросом.

Наши рекомендации