Кстати, скрипт перегружен.
Всё можно сделать в один цикл и без скелета:
1. Смотрим количество умертвий в слоте.
2. Если умертвия есть, то сравниваем количество в слоте с общим количеством.
3. Если количество в слоте меньше, чем общее, значит есть ещё умертвия и спокойно забираем умертвий из слота - выдаём баньши в слот.
4. Если иначе, значит в слоте находятся все умертвия (тут два варианта - есть ещё армия или только умертвия). В любом случае забираем умертвий из слота - выдаём баньши в слот и контрольно забираем одно умертвие (если оно добавилось в случае единственного слота).
Конец цикла.
Я не спец по скриптам, но как-то так:
----------------ДЕЙДРА-------------------
function error_NHF_Nemor_F ()
print("error:NHF_Nemor_F");
end;
function NHF_HERO_F.Nemor ()
errorHook(error_NHF_Nemor_F);
local slot = -1;
local i_count = 0;
local id, count;
local temp_name = NHF_tempName_F("Nemor");
local count_umertvie = GetHeroCreatures("Nemor", CREATURE_WIGHT);
if count_umertvie > 0 then --Поправлено 0.84
for i = 0,6 do
id, count = GetObjectArmySlotCreature(temp_name,i);
if id == CREATURE_WIGHT then
if count < count_umertvie then - проверка, все ли умертвия в одном слоте.
RemoveHeroCreatures("Nemor", CREATURE_WIGHT, count, i);
AddHeroCreatures("Nemor", CREATURE_BANSHEE , count,i);
else
RemoveHeroCreatures("Nemor", CREATURE_WIGHT, count, i);
AddHeroCreatures("Nemor", CREATURE_BANSHEE , count,i);
RemoveHeroCreatures("Nemor", CREATURE_WIGHT, 1);
end;
end;
end;
end;