1) Высчитываются тайлы закрытия охраной портала (может быть стеков существ на карте и несколько, что плохо, но это редкость).
2) Выбираются сильнейшие охраны (слабые удаляются).
3) Охраны дублируются со всех сторон неодиночного портала.
4) При нападении на охрану (срабатывает триггер), дубль сразу же удаляется.
5) Если после боя осталась охрана, то снова дублируется то, что осталось. (если мы не сделаем пункты 4 и 5, охрана в дубле не уменьшится, если будет покоцана).
RedHeavenHeroУже есть таблица и функция:
local powers={ 41,72,140,199,201,287,524,716,1086,1487,2185,2520,4866,6153,
75,124,101,150,259,370,511,694,1069,1415,2102,2360,4868,5850,
54,84,105,150,232,327,518,739,1166,1539,2204,2588,3174,3905,
100,169,191,311,309,433,635,846,1072,1441,1717,1993,4942,6028,
63,105,113,172,243,357,498,643,839,1126,2108,2535,4822,6095,
180,295,333,484,342,474,598,812,968,1324,2193,2537,5235,6443,
829,795,856,813,1793,2560,8576,
70,115,115,171,304,419,318,434,932,1308,2109,2477,4883,6100,
72,203,299,697,1523,2520,6003,
355,671,2523,1542,
42,69,121,174,190,254,492,680,695,926,2058,2571,4790,5937,
127,149,338,680,1434,2448,5860,
290,477,488,833,1333,2622,6389,
174,308,447,862,1457,2032,5905,
85,145,331,757,1541,2449,3872,
105,180,355,642,1096,2581,6095,
113,171,422,434,1329,2437,6070,
66,181,265,692,895,2572,5937};
function CalcPower(object)
if IsObjectExists(object) == nil then
return 0;
end;
local power = 0;
for i=1,179 do
power = power + %powers[i] * GetObjectCreatures(object, i);
end;
return power;
end;
Это очень хорошо. Но тогда процесс объединения с NFC необратим, т.к. совместимость пропадет после применения такой таблицы. Но пока будет достаточно какого-нить исключения: например, если существа нет в таблице, сила равна 10.