# HG changeset patch # User Wuzzy # Date 1506373455 -7200 # Node ID 767920fd03a1da079cb6598257c935f6d68c1b01 # Parent a5ddc6b4abbd8e37eac42d0778a43d79a67ee4b6 ASA, Searching in the dust: Fix Hog Solo being able to rope past all smugglers diff -r a5ddc6b4abbd -r 767920fd03a1 share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua Mon Sep 25 22:25:10 2017 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua Mon Sep 25 23:04:15 2017 +0200 @@ -288,7 +288,9 @@ function onHeroAtFirstBattle(gear) if not hero.dead and not heroIsInBattle and GetHealth(smuggler1.gear) and GetX(hero.gear) <= 1450 and GetX(hero.gear) > 80 - and GetY(hero.gear) <= GetY(smuggler1.gear)+5 and GetY(hero.gear) >= GetY(smuggler1.gear)-40 and StoppedGear(hero.gear) then + and GetY(hero.gear) <= GetY(smuggler1.gear)+5 and GetY(hero.gear) >= GetY(smuggler1.gear)-40 and + -- If hero is standing or at a rope + (StoppedGear(hero.gear) or GetGearElasticity(hero.gear) ~= 0) then return true end return false @@ -306,7 +308,8 @@ -- saves the location of the hero and prompts him for the second battle function onHeroAtBattlePoint1(gear) if not hero.dead and GetX(hero.gear) > 1000 and GetX(hero.gear) < 1100 - and GetY(hero.gear) > 590 and GetY(hero.gear) < 700 and StoppedGear(hero.gear) then + and GetY(hero.gear) > 590 and GetY(hero.gear) < 700 and StoppedGear(hero.gear) + and (StoppedGear(hero.gear) or GetGearElasticity(hero.gear) ~= 0) then return true end return false @@ -314,7 +317,8 @@ function onHeroAtBattlePoint2(gear) if not hero.dead and GetX(hero.gear) > 1610 and GetX(hero.gear) < 1680 - and GetY(hero.gear) > 850 and GetY(hero.gear) < 1000 and StoppedGear(hero.gear) then + and GetY(hero.gear) > 850 and GetY(hero.gear) < 1000 + and (StoppedGear(hero.gear) or GetGearElasticity(hero.gear) ~= 0) then return true end return false @@ -357,11 +361,18 @@ function heroAtFirstBattle(gear) AnimCaption(hero.gear, loc("A smuggler! Prepare for battle"), 5000) + -- Hog gets scared if on rope + if GetGearElasticity(hero.gear) ~= 0 then + HogSay(hero.gear, loc("Gasp! A smuggler!"), SAY_SHOUT) + end + -- Remember velocity to restore it later + local dx, dy = GetGearVelocity(hero.gear) EndTurn(true) heroIsInBattle = true ongoingBattle = 1 AnimSwitchHog(smuggler1.gear) EndTurn(true) + SetGearVelocity(hero.gear, dx, dy) end function heroFleeFirstBattle(gear) @@ -383,8 +394,14 @@ heroIsInBattle = true ongoingBattle = 3 AnimSay(smuggler3.gear, loc("Who's there?! I'll get you!"), SAY_SHOUT, 5000) + -- Hog gets scared and falls from rope + if GetGearElasticity(hero.gear) ~= 0 then + HogSay(hero.gear, loc("Yikes!"), SAY_SHOUT) + end + local dx, dy = GetGearVelocity(hero.gear) AnimSwitchHog(smuggler3.gear) EndTurn(true) + SetGearVelocity(hero.gear, dx, dy) end function crateDestroyed(gear) @@ -449,11 +466,17 @@ if heroIsInBattle and ongoingBattle == 1 then AnimSay(smuggler1.gear, loc("Get him, Spike!"), SAY_SHOUT, 4000) end + -- Hog gets scared if on rope + if GetGearElasticity(hero.gear) ~= 0 then + HogSay(hero.gear, loc("Gasp!"), SAY_SHOUT) + end + local dx, dy = GetGearVelocity(hero.gear) heroIsInBattle = true ongoingBattle = 2 AnimSay(smuggler2.gear, loc("This is seems like a wealthy hedgehog, nice ..."), SAY_THINK, 5000) AnimSwitchHog(smuggler2.gear) EndTurn(true) + SetGearVelocity(hero.gear, dx, dy) end function checkForWin()