Долгое время раздражал нейтральный цвет героев при использовании StartCombat, экспериментируя нашел способ давать им цвета игроков.
При использовании SiegeTown цвет там сохранялся, но оставались объекты осады. Попробовал удалить все объекты с арены осады и сработало.
Это будет Heaven1.(AdvMapTownShared).xdb это наша арена без осадных объектов.
Дальше будет Spes.xdb это наша установка на арене, в Shared вставляем нашу пустую арену (<Shared href="Heaven1.(AdvMapTownShared).xdb#xpointer(/AdvMapTownShared)"/>)
<PlayerID> как раз задаёт нужный цвет противника. Пример: <PlayerID>PLAYER_2</PlayerID>
<Specialization/> задаёт осадные бонусы по типу -1 удачи всем атакующим у замка нежити и тд. Но можно их выключить.
<armySlots> армия противника. если не будет героя то будут мобы без героя но с цветом.
<GarrisonHero/> ссылка на вражеского героя. Пример <GarrisonHero href="Duncan.xdb#xpointer(/AdvMapHero)"/>
<Script/> Боевые скрипты на арене пример <Script href="CombatScript_duncan.xdb#xpointer(/Script)"/>
<LinkToPlayer>PLAYER_2</LinkToPlayer> тоже советовал бы ставить нужный цвет противника.
<AllowQuickCombat>true</AllowQuickCombat> ну это понятно быстрый бой вк/выкл, правда не тестил работает ли выключение но скорее всего да.
Дальше будет файл вражеского героя в архиве он будет Duncan.xdb
<Shared> ссылка на героя, но у меня почему то не работали прописаные навыки статы и тд. Возможно не выкрутил много маски. Поэтому как вариант создаем болванку героя копию Duncan1.(AdvMapHeroShared).xdb и вписываем все статы умения героя и тд туда.
в Duncan.xdb <armySlots> именно сюда вписывать армию героя.
Следующий файл Duncan1.(AdvMapHeroShared).xdb это болванка-копия вражеского героя туда вписывать статы, заклинания и навыки.
Все эти файлы кидаем в вашу созданную карту и пути тоже делать правильные.
Теперь что бы вызвать битву вот пример кода пишем в свой MapScript
АвторSiegeTown("Freyda", "/Maps/SingleMissions/test/Spes.xdb#xpointer(/AdvMapTown)",
'/Scenes/CombatArenas/Boss_c6m3_Dirt2.xdb#xpointer(/AdventureFlybyScene)')
Freyda - это скриптовое имя вашего героя, потом идет путь к установке Spes, и третье идет путь на арену где это всё будет происходить. Можно как на стандартные арены сделать путь так и на кастомные свои карты. Для арен нужно именно Scenes а не Maps.
Ну вроде бы и всё, из плюсов такого метода: не нужно держать героя в резерве, можно вызывать бой даже если этот герой стоит на карте, можно вызывать бой сколько раз угодно меняя установки/армии/статы и тд, можно красить цвет мобов без героя. Из минусов если у вашего героя есть навык Разгадка тайного и нажать на вражеского героя то игра вылетает, скорее всего я случайно удалил эту сцену где стоит вражеский герой на поляне но не точно. из вражеских героев если у них будут артефакты они всегда будут выпадать с них и это никак нельзя запретить плюс или минус кому как.
Так же можно вызвать обычную осаду с объектами если заменить в Spes.xdb Shared на стандартную Heaven.(AdvMapTownShared).xdb и задать ей стандартный путь оригинальных файлов.
Надеюсь инфа пригодится если кто то искал такой способ.
Если кто то не понял или не получается прикреплю карту тест где я всё там это сделал, можно на примере посмотреть.