Alfheim fix - the Alfheim edda is supposed to only cast beneficial spells on allies and harmful spells on enemies, but it was casting both types on any units
addon_arena.lua
original:
Code:
local tab_spell_select = {
-- õîðîøèå çàêëû
{s = "spell_dispell", nf = "magic_immunitet,pawn,boss"},
{s = "spell_haste", nf = "magic_immunitet,pawn,boss"},
{s = "spell_bless", nf = "undead,magic_immunitet,pawn,boss"},
{s = "spell_divine_armor", nf = "undead,magic_immunitet,pawn,boss"},
{s = "spell_reaction", nf = "magic_immunitet,pawn,boss"},
{s = "spell_gifts", nf = "magic_immunitet,pawn,boss"},
-- ïëîõèå çàêëû
{s = "spell_defenseless", nf = "magic_immunitet,pawn,boss"},
{s = "spell_slow", nf = "magic_immunitet,pawn,boss"},
{s = "spell_magic_bondage", nf = "mind_immunitet,magic_immunitet,pawn,boss"},
{s = "spell_pygmy", nf = "magic_immunitet,pawn,boss"},
{s = "spell_scare", nf = "magic_immunitet,mind_immunitet,undead,pawn,boss"},
{s = "spell_weakness", nf = "undead,golem,plant,magic_immunitet,pawn,boss"},
{s = "spell_crue_fate", nf = "magic_immunitet,pawn,boss"}--[[,
{s = "spell_ram", nf = "magic_immunitet,pawn,boss,mech"}]]
}
local cast = {}
local spell_count = table.getn(tab_spell_select)
local acnt = Attack.act_count()
local total_prob = 0
for i = 1, spell_count do
local spell = (tab_spell_select[i]).s
local nfeatures = (tab_spell_select[i]).nf
local tab_spell_targets = {}
for j = 0, acnt-1 do
if not Attack.act_feature(j, nfeatures) and Attack.act_takesdmg(j) then
table.insert(tab_spell_targets, j) -- âûáîð áàçîâûõ öåëåé
end
end
if table.getn(tab_spell_targets) > 0 then -- åñòü áàçîâûå öåëè
local spell_lvl = Game.Random (1, 3) -- óðîâåíü çàêëà, êîòîðûé áóäåì þçàòü
local applicable = Attack.build_spell_attack(spell, spell_lvl).applicable
for i, t in ipairs (tab_spell_targets) do
if applicable(t) then -- çàêë ïðèìåíèì íà ýòó öåëü
local prob = 10
total_prob = total_prob + prob
table.insert(cast, {spell = spell, level = spell_lvl, target = t, prob = prob})
end
end
end
end
modified:
Code:
local tab_spell_select_positive = {
-- õîðîøèå çàêëû
{s = "spell_dispell", nf = "magic_immunitet,pawn,boss"},
{s = "spell_haste", nf = "magic_immunitet,pawn,boss"},
{s = "spell_bless", nf = "undead,magic_immunitet,pawn,boss"},
{s = "spell_divine_armor", nf = "undead,magic_immunitet,pawn,boss"},
{s = "spell_reaction", nf = "magic_immunitet,pawn,boss"},
{s = "spell_gifts", nf = "magic_immunitet,pawn,boss"}
}
local tab_spell_select_negative = {
-- ïëîõèå çàêëû
{s = "spell_defenseless", nf = "magic_immunitet,pawn,boss"},
{s = "spell_slow", nf = "magic_immunitet,pawn,boss"},
{s = "spell_magic_bondage", nf = "mind_immunitet,magic_immunitet,pawn,boss"},
{s = "spell_pygmy", nf = "magic_immunitet,pawn,boss"},
{s = "spell_scare", nf = "magic_immunitet,mind_immunitet,undead,pawn,boss"},
{s = "spell_weakness", nf = "undead,golem,plant,magic_immunitet,pawn,boss"},
{s = "spell_crue_fate", nf = "magic_immunitet,pawn,boss"}--[[,
{s = "spell_ram", nf = "magic_immunitet,pawn,boss,mech"}]]
}
local cast = {}
local acnt = Attack.act_count()
local total_prob = 0
local spell_count = table.getn(tab_spell_select_positive)
for i = 1, spell_count do
local spell = (tab_spell_select_positive[i]).s
local nfeatures = (tab_spell_select_positive[i]).nf
local tab_spell_targets = {}
for j = 0, acnt-1 do
if not Attack.act_feature(j, nfeatures) and Attack.act_takesdmg(j) and Attack.act_ally(j) then
table.insert(tab_spell_targets, j) -- âûáîð áàçîâûõ öåëåé
end
end
if table.getn(tab_spell_targets) > 0 then -- åñòü áàçîâûå öåëè
local spell_lvl = Game.Random (1, 3) -- óðîâåíü çàêëà, êîòîðûé áóäåì þçàòü
local applicable = Attack.build_spell_attack(spell, spell_lvl).applicable
for i, t in ipairs (tab_spell_targets) do
if applicable(t) then -- çàêë ïðèìåíèì íà ýòó öåëü
local prob = 10
total_prob = total_prob + prob
table.insert(cast, {spell = spell, level = spell_lvl, target = t, prob = prob})
end
end
end
end
spell_count = table.getn(tab_spell_select_negative)
for i = 1, spell_count do
local spell = (tab_spell_select_negative[i]).s
local nfeatures = (tab_spell_select_negative[i]).nf
local tab_spell_targets = {}
for j = 0, acnt-1 do
if not Attack.act_feature(j, nfeatures) and Attack.act_takesdmg(j) and Attack.act_enemy(j) then
table.insert(tab_spell_targets, j) -- âûáîð áàçîâûõ öåëåé
end
end
if table.getn(tab_spell_targets) > 0 then -- åñòü áàçîâûå öåëè
local spell_lvl = Game.Random (1, 3) -- óðîâåíü çàêëà, êîòîðûé áóäåì þçàòü
local applicable = Attack.build_spell_attack(spell, spell_lvl).applicable
for i, t in ipairs (tab_spell_targets) do
if applicable(t) then -- çàêë ïðèìåíèì íà ýòó öåëü
local prob = 10
total_prob = total_prob + prob
table.insert(cast, {spell = spell, level = spell_lvl, target = t, prob = prob})
end
end
end
end
|