diff -r 12ffbbf81ee1 -r 543729d313f5 share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua --- 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