Drmax4, в качестве идеи, которую можно попробовать (скрипт получается совсем не простым):
1) Убрать из главных квестов задания наподобие "герой должен выжить". В этом случае при потере всех героев и замков игра не должна выдавать проигрыш. (вроде бы была такая возможность, если я ничего не путаю). Если не получится, то тогда придётся придумывать другое событие для перехода игрока.
2) Отловить событие проигрыша игрока. Например по триггеру окончания боя (COMBAT_RESULTS_TRIGGER) проверять сколько у него в наличии героев (GetPlayerHeroes) и замков (GetObjectOwner для всех замков на карте).
3) Второй игрок в это время может находится с отключенным ИИ (EnableHeroAI), без замков и так, чтобы его ход вообще не показывался (DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes). Или просто выключить ИИ героев, а замок пусть стоит без дела. А ещё можно поместить героев в резерв (в редакторе карт есть такая функция). Тут я не уверен, что именно вы хотите получить на выходе.
4) По нужному событию герои, замки и что нужно ещё переводится в собственность игрока 1 функцией SetObjectOwner.