Bool IsHeroLootable( sHeroName )
Функции устанавливают/возвращают «лутабельность» героя с именем sHeroName. Говоря по-простому – будет ли выпадать из героя лут при его поражении в бою.
Void MarkObjectAsVisited( sObjectName, sHeroName )
Выставляет у объекта sObjectName «признак посещенности» героем с именем sHeroName на текущий день. Если объект имеет статус enabled (см. ниже IsObjectEnabled и SetObjectEnabled), вызов данной функции приводит к ошибке.
STownName GetHeroTown( sHeroName )
Если герой с именем sHeroName находится в городе (имеется ввиду – именно внутри, а не на карте около входа), то данная функция возвращает имя города. В противном случае функция вернет nil.
SHeroName GetTownHero( sTownName )
Аналогично GetHeroTown, но в этом случае имя героя ищется по имени города.
tsObjects GetObjectsFromPath( sHeroName, nX, nY, nFloorID = -1 )
Функция возвращает массив объектов, мимо которых герой с именем sHeroName проскачет при путешествии из Петербурга в Москву… т.е. из текущего своего положения в точку с указанными координатами. Если не указан этаж, то будет использован тот, на котором герой находится.
Void GiveHeroWarMachine( sHeroName, nWarMachineID )
Void HasHeroWarMachine( sHeroName, nWarMachineID )
Bool RemoveHeroWarMachine( sHeroName, nWarMachineID )
Функции выдают/проверяют наличие/удаляют машину nWarMachineID у героя с именем sHeroName. Соотв. константы для nWarMachineID прописаны в /scripts/common.lua и бывают такими:
WAR_MACHINE_BALLISTA = 1
WAR_MACHINE_CATAPULT = 2
WAR_MACHINE_FIRST_AID_TENT = 3
WAR_MACHINE_AMMO_CART = 4
Попытка удалить несуществующую машину к ошибке не приводит. Удалить катапульту в любом случае не удастся. В случае успеха функция возвращает true, иначе – nil.
void StartCombat( sHeroName, sEnemyHeroName, nEnemyIDCount, nCreatureID1, nCount1, nCreatureID2, nCount2, ..., spScriptXDB, sFinishProc, spAdventureFlybySceneXDB = nil )
Одна из трех возможностей инициировать переход на тактическую карту непосредственно из скрипта стратегического режима. О параметрах подробнее:
sHeroName – атакующий герой.
sEnemyHeroName – защищающийся герой. Может быть nil в случае атаки нейтралов без героя.
nEnemyIDCount – количество стеков в армии защищающегося. Должно быть больше нуля.
Далее перечисляются nEnemyIDCount пар вида
nCreatureID – тип существа и nCount – количество существ в стеке.
spScriptXDB – путь к XDB файлу тактического скрипта, либо nil, если дело происходит «на автомате».
sFinishProc – имя функции, которой будет передано управлении после окончания боя (с уведомлением о результате). Обращаю внимание, что это именно строка, а не параметр типа функция. Данный callback имеет следующий прототип:
void combatDone( sHeroName, bWin )
где sHeroName – имя атакующего героя, а bWin – статус сражения относительно атакующего (nil – поражение, иначе – победа).
spAdventureFlybySceneXDB – путь к xdb, определяющему арену, на которой будет происходить сражение. Если nil, то будет взята арена, тип которой соответствует типу местности, на которой находится атакующий герой на стратегической карте.
В официальном руководстве по скриптам утверждается, что у функции есть еще один параметр – allowQuickCombat, при выставлении которого в true битва будет происходить в режиме QuickCombat (если настройки игры это позволяют). Насколько я понимаю, это является ошибкой, такого параметра нет.
Void SetHeroCombatScript( sHeroName, spScriptXDB )
Функция выставляет герою с именем sHeroName скрипт, который будет работать в последующих тактических боях. Если происходит эпическая битва между двумя героями, оба из которых имеют установленный скрипт, то работает скрипт атакующего. В официальном руководстве по скрипту сказано, что навешенный скрипт будет работать только для героя под управлением АИ – это не так.
Void ResetHeroCombatScript( sHeroName )
Функция сбрасывает навешенный ранее на героя скрипт. Если ничего навешено не было, то ошибки не происходит.
void SiegeTown( sHeroName, spAdvMapTownXDB, spAdventureFlybySceneXDB = nil )
Собственно, стартует осада города, путь к xdb с описанием которого задан во втором параметре, на арене, заданной третьим параметром. Если последний параметр nil, то берется арена по умолчанию.
Работа с городами.
Если город, имя которого передано в функцию, отсутствует на карте, то вызов функции приводит к ошибке.