remove variable substitution from leadership and backstab abilities
This commit is contained in:
parent
80d27b4584
commit
70a23cdf83
2 changed files with 49 additions and 12 deletions
|
@ -112,7 +112,7 @@ Adjacent own units of lower level will do more damage in battle. When a unit adj
|
||||||
affect_self=no
|
affect_self=no
|
||||||
[affect_adjacent]
|
[affect_adjacent]
|
||||||
[filter]
|
[filter]
|
||||||
level=$($other_unit.level - 5)
|
lua_function="leadership_receiver_filter_5"
|
||||||
[/filter]
|
[/filter]
|
||||||
[/affect_adjacent]
|
[/affect_adjacent]
|
||||||
[/leadership]
|
[/leadership]
|
||||||
|
@ -123,7 +123,7 @@ Adjacent own units of lower level will do more damage in battle. When a unit adj
|
||||||
affect_self=no
|
affect_self=no
|
||||||
[affect_adjacent]
|
[affect_adjacent]
|
||||||
[filter]
|
[filter]
|
||||||
level=$($other_unit.level - 4)
|
lua_function="leadership_receiver_filter_4"
|
||||||
[/filter]
|
[/filter]
|
||||||
[/affect_adjacent]
|
[/affect_adjacent]
|
||||||
[/leadership]
|
[/leadership]
|
||||||
|
@ -134,7 +134,7 @@ Adjacent own units of lower level will do more damage in battle. When a unit adj
|
||||||
affect_self=no
|
affect_self=no
|
||||||
[affect_adjacent]
|
[affect_adjacent]
|
||||||
[filter]
|
[filter]
|
||||||
level=$($other_unit.level - 3)
|
lua_function="leadership_receiver_filter_3"
|
||||||
[/filter]
|
[/filter]
|
||||||
[/affect_adjacent]
|
[/affect_adjacent]
|
||||||
[/leadership]
|
[/leadership]
|
||||||
|
@ -145,7 +145,7 @@ Adjacent own units of lower level will do more damage in battle. When a unit adj
|
||||||
affect_self=no
|
affect_self=no
|
||||||
[affect_adjacent]
|
[affect_adjacent]
|
||||||
[filter]
|
[filter]
|
||||||
level=$($other_unit.level - 2)
|
lua_function="leadership_receiver_filter_2"
|
||||||
[/filter]
|
[/filter]
|
||||||
[/affect_adjacent]
|
[/affect_adjacent]
|
||||||
[/leadership]
|
[/leadership]
|
||||||
|
@ -156,7 +156,7 @@ Adjacent own units of lower level will do more damage in battle. When a unit adj
|
||||||
affect_self=no
|
affect_self=no
|
||||||
[affect_adjacent]
|
[affect_adjacent]
|
||||||
[filter]
|
[filter]
|
||||||
level=$($other_unit.level - 1)
|
lua_function="leadership_receiver_filter_1"
|
||||||
[/filter]
|
[/filter]
|
||||||
[/affect_adjacent]
|
[/affect_adjacent]
|
||||||
[/leadership]
|
[/leadership]
|
||||||
|
@ -349,13 +349,7 @@ Enemy units cannot see this unit while it is in deep water, except if they have
|
||||||
multiply=2
|
multiply=2
|
||||||
active_on=offense
|
active_on=offense
|
||||||
[filter_opponent]
|
[filter_opponent]
|
||||||
[filter_adjacent]
|
lua_function="backstab_defender_filter"
|
||||||
adjacent=$other_unit.facing
|
|
||||||
is_enemy=yes
|
|
||||||
[not]
|
|
||||||
status=petrified
|
|
||||||
[/not]
|
|
||||||
[/filter_adjacent]
|
|
||||||
[/filter_opponent]
|
[/filter_opponent]
|
||||||
[/damage]
|
[/damage]
|
||||||
#enddef
|
#enddef
|
||||||
|
|
|
@ -13,3 +13,46 @@ function teleport_target_filter(x, y)
|
||||||
local blocking_unit = wesnoth.get_unit(x, y)
|
local blocking_unit = wesnoth.get_unit(x, y)
|
||||||
return not blocking_unit
|
return not blocking_unit
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function backstab_defender_filter(defender)
|
||||||
|
|
||||||
|
local attacker_x = wesnoth.get_variable("other_unit.x")
|
||||||
|
local attacker_y = wesnoth.get_variable("other_unit.y")
|
||||||
|
|
||||||
|
local defender_x = defender.x
|
||||||
|
local defender_y = defender.y
|
||||||
|
|
||||||
|
local adjacent = {wesnoth.map.get_adjacent_tiles(x, y)}
|
||||||
|
|
||||||
|
local attacker_pos_index = nil
|
||||||
|
for i,v in ipairs(adjacent) do
|
||||||
|
if v[1] == attacker_x and v[2] == attacker_y then
|
||||||
|
attacker_pos_index = i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if attacker_pos_index == nil then
|
||||||
|
-- Attack not from adjacent location
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local opposite_pos_index = (((attacker_pos_index + 3) - 1) % 6) + 1
|
||||||
|
local opposite_unit = wesnoth.get_unit(adjacent[opposite_pos_index][1], adjacent[opposite_pos_index][2])
|
||||||
|
|
||||||
|
if not opposite_unit then
|
||||||
|
-- No opposite unit
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if opposite_unit.status.petrified then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
return wesnoth.is_enemy(opposite_unit.side, defender.side)
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, 5 do
|
||||||
|
_G["leadership_receiver_filter_" .. i] = function(receiver)
|
||||||
|
return receiver.level == wesnoth.get_variable("other_unit.level") - i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue