share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua
changeset 14876 543729d313f5
parent 14776 1aea457856e2
child 14898 4596357d002d
--- 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