1) Как изменить специализацию героя
Решение в лоб - это поставить героя на карту, в дереве свойств ткнуть shared, и там будет кучу параметров героя, которые можно поменять, в том числе specialization. Таким образом, насколько я помню, ваша карта станет модом. Можно еще создать своего героя, и настроить его как вам надо, это решение уже не будет влиять на другие карты.
2) Как убрать панельку хода игроков
Если компьютер не имеет активных героев и замков, то можно убрать полоску хода функцией с красноречивым названием DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes().
Есть задание на победу демонов
Можно дать демонам имена (а если это герои, то имена у них уже есть по умолчанию, но с героями есть свои особенности), и по какому-то событию проверять их наличие на карте функцией IsObjectExists(). Самое удобное событие наверное - триггер результатов битвы:
Trigger(COMBAT_RESULTS_TRIGGER, 'CombatResult');
function CombatResult(id)
если квест активен и оба демона не существуют обновить квест
end
Плюс ещё не забыть нестандартные варианты, к примеру при выдаче квеста проверять не убил ли их игрок заранее.