Это в точности вылет из сейва Панды. Я тебе его уже кидал с последовательностью действий. Перепроверил ещё раз с генерацией вылета. Благо, сейв сохранился. Ты сказал тогда, что карта уже битая из-за плагина и бесполезно что-либо менять.
Вот сейв Панды:
https://dropmefiles.com/9uHEt
Открываем окно героя. Выбираем нового оруженосца.
Заходим в окно города и выходим.
Пробуем поднять Знамя Войны у города основным героем. Вылет ровно в том же месте.
Хотя, кажется, это были не твои плагины. Смотри:
Quote:if(NPCinBattleStr[0]==0) goto No_NPC; // и не было
if(*(int *)&NPCinBattleStr[0][0x4C]!=0){ // остался жив
Мусорный указатель на стэк командира в бою? Хотя боя не была, идёт подъём артефакта или посещение объекта.
int PlaceNPCAtBattleStart2(Byte *bm,int Side,int Placed)
NPCinBattleStr[Side]=0; этот код сработает только при бое, а если мы только загрузили игру и стартовали сохранение?
Проблема в том, что
// NPC
{0x4DA9B6,0,DP(NPC_AddExpo)}, //
Этот вызов происходит не только после боя, но и после посещения любого объекта. А ВоГ считает, что после боя и использует мусор в глобальной переменной NPCinBattleStr из прошлых боёв для проверки командира. Я прав?