--- a/share/hedgewars/Data/Scripts/Multiplayer/Battalion.lua Mon Feb 12 15:50:49 2018 +0100
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Battalion.lua Mon Feb 12 16:41:40 2018 +0100
@@ -1120,12 +1120,9 @@
hpDiff = div(deathMaxHP * highEnemyKillHPBonus, 100)
newHP = curHP + hpDiff
- SetHealth(CurHog, newHP)
-
- local effect = AddVisualGear(GetX(CurHog), GetY(CurHog) - cratePickupGap, vgtHealthTag, hpDiff, false)
- -- Set Tint
- SetVisualGearValues(effect, nil, nil, nil, nil, nil, nil, nil, nil, nil, GetClanColor(GetHogClan(CurHog)))
- -- Friendly fire! Remove all weapons and helpers from pool
+ HealHog(CurHog, newHP)
+ -- Friendly fire! Punish hog by removing weapons and helpers from pool
+ -- and reduce health
else
highWeapons[CurHog] = {}
highHelpers[CurHog] = {}
@@ -1235,7 +1232,10 @@
##############################################################################
]]--
-function calcKingHP()
+function calcKingHP(doEffects)
+ if doEffects == nil then
+ doEffects = true
+ end
local teamKings = {}
local teamHealth = {}
@@ -1260,23 +1260,30 @@
for team, hog in pairs(teamKings) do
local hp = GetHealth(hog)
local newHP = div(teamHealth[team] * kingLinkPerc, 100)
- local diff = newHP - hp
-- Set hitpoints to 1 if no other hog is alive or only has 1 hitpoint
if newHP <= 0 then
newHP = 1
- diff = 0
end
- if diff < 0 then
- diff = -diff
- end
+ local diff = math.abs(newHP - hp)
- if hp ~= newHP then
- SetHealth(hog, newHP)
- local effect = AddVisualGear(GetX(hog), GetY(hog) - cratePickupGap, vgtHealthTag, diff, false)
- -- Set Tint
- SetVisualGearValues(effect, nil, nil, nil, nil, nil, nil, nil, nil, nil, GetClanColor(GetHogClan(hog)))
+ -- Change HP and do some nice effects
+ if newHP ~= hp then
+ if not doEffects then
+ SetHealth(hog, newHP)
+ else
+ if newHP > hp then
+ HealHog(hog, diff, false)
+ elseif newHP < hp then
+ SetHealth(hog, newHP)
+ if doEffects then
+ local effect = AddVisualGear(GetX(hog), GetY(hog) - cratePickupGap, vgtHealthTag, diff, false)
+ -- Set Tint
+ SetVisualGearValues(effect, nil, nil, nil, nil, nil, nil, nil, nil, nil, GetClanColor(GetHogClan(hog)))
+ end
+ end
+ end
end
end
end
@@ -1606,7 +1613,7 @@
end
if mode == 'king' then
- calcKingHP()
+ calcKingHP(false)
end
local txt = ''