--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua Sat May 04 00:56:27 2019 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua Sat May 04 19:07:58 2019 +0200
@@ -50,6 +50,7 @@
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
+HedgewarsScriptLoad("/Scripts/Utils.lua")
-----------------------------Constants---------------------------------
choiceAccepted = 1
@@ -156,6 +157,8 @@
wave3DeadAnim = {}
vCircs = {}
+
+trackedMines = {}
-----------------------------Animations--------------------------------
function Wave2Reaction()
local i = 1
@@ -937,6 +940,18 @@
if cyborgHidden == true then
RestoreHog(cyborg)
cyborgHidden = false
+ -- Clear mines around cyborg
+ local vaporized = 0
+ for mine, _ in pairs(trackedMines) do
+ if GetHealth(mine) and GetHealth(cyborg) and gearIsInBox(mine, GetX(cyborg) - 50, GetY(cyborg) - 50, 100, 100) == true then
+ AddVisualGear(GetX(mine), GetY(mine), vgtSmoke, 0, false)
+ DeleteGear(mine)
+ vaporized = vaporized + 1
+ end
+ end
+ if vaporized > 0 then
+ PlaySound(sndVaporize)
+ end
end
end
@@ -1083,7 +1098,19 @@
CheckEvents()
end
+function onGearAdd(gear)
+ local gt = GetGearType(gear)
+ if gt == gtMine or gt == gtSMine or gt == gtAirMine then
+ trackedMines[gear] = true
+ end
+end
+
function onGearDelete(gear)
+ local gt = GetGearType(gear)
+ if gt == gtMine or gt == gtSMine or gt == gtAirMine then
+ trackedMines[gear] = nil
+ end
+
for i = 1, 7 do
if gear == natives[i] then
if nativeDead[i] ~= true then