# HG changeset patch # User Wuzzy # Date 1558435055 -7200 # Node ID cf5d6ee109c9c625c3427f6a2cb87397125f22ec # Parent d610d1c9fd557fc893b74c33055509a449ca91b6 ACF1: Fix pastMoleHeadAnim being played twice diff -r d610d1c9fd55 -r cf5d6ee109c9 share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua Mon May 20 21:14:39 2019 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua Tue May 21 12:37:35 2019 +0200 @@ -167,6 +167,7 @@ [onFlowerAnim] = {loc("First Blood"), loc("Hightime"), loc("Collect the crate on the right.") .. "|" .. loc("Hint: Select the rope, [Up] or [Down] to aim, [Attack] to fire, directional keys to move.") .. "|" .. loc("Ropes can be fired again in the air!") .. "| |" .. ctrlAttack, 1, 7000}, [tookParaAnim] = {loc("First Blood"), loc("Omnivore"), loc("Get on the head of the mole."), 1, 4000}, [onMoleHeadAnim] = {loc("First Blood"), loc("The Leap of Faith"), loc("Use the parachute to get the next crate.") .. "|" .. loc("Hint: Just select the parachute, it opens automatically when you fall."), 1, 4000}, + [pastMoleHeadAnim] = {loc("First Blood"), loc("The Leap of Faith"), loc("Get that crate!"), 1, 4000}, [tookRope2Anim] = {loc("First Blood"), loc("The Rising"), loc("Get that crate!"), 1, 4000}, [tookPunchAnim] = {loc("First Blood"), loc("The Slaughter"), loc("Destroy the targets!") .. "|" .. loc("Hint: Select the Shoryuken and hit [Attack].|P.S.: You can use it mid-air.") .. "| |" .. ctrlAttack, 1, 5000}, [challengeAnim] = {loc("First Blood"), loc("The Crate Frenzy"), loc("Collect the crates within the time limit!|If you fail, you'll have to try again."), 1, 5000}, @@ -264,6 +265,7 @@ AddSkipFunction(pastMoleHeadAnim, Skipanim, {pastMoleHeadAnim}) table.insert(pastMoleHeadAnim, {func = AnimSay, args = {elderh, loc("I see you have already taken the leap of faith."), SAY_SAY, 4000}, skipFunc = Skipanim, skipArgs = pastMoleHeadAnim}) table.insert(pastMoleHeadAnim, {func = AnimSay, args = {elderh, loc("Get that crate!"), SAY_SAY, 4000}}) + table.insert(pastMoleHeadAnim, {func = AnimShowMission, args = {youngh, unpack(goals[pastMoleHeadAnim])}}) table.insert(pastMoleHeadAnim, {func = AnimSwitchHog, args = {youngh}}) AddSkipFunction(tookRope2Anim, Skipanim, {tookRope2Anim}) @@ -462,45 +464,42 @@ function DoTookParaCrate() AddAmmo(youngh, amParachute, 100) SetGearMessage(CurrentHedgehog, 0) - AddAnim(tookParaAnim) - AddEvent(CheckOnMoleHead, {}, DoOnMoleHead, {}, 0) - AddEvent(CheckPastMoleHead, {}, DoPastMoleHead, {}, 0) + if CheckOnOrPastMoleHead() then + DoOnOrPastMoleHead() + else + AddAnim(tookParaAnim) + AddEvent(CheckOnOrPastMoleHead, {}, DoOnOrPastMoleHead, {}, 0) + end end function CheckOnMoleHead() - x = GetX(youngh) + local x = GetX(youngh) return x >= 3005 and x <= 3126 and StoppedGear(youngh) end function CheckPastMoleHead() - x = GetX(youngh) - y = GetY(youngh) + local x = GetX(youngh) + local y = GetY(youngh) return x < 3005 and y > 1500 and StoppedGear(youngh) end -function DoPastMoleHead() +function CheckOnOrPastMoleHead() + return CheckOnMoleHead() or CheckPastMoleHead() +end + +function DoOnOrPastMoleHead() -- Initiate parachute challenge - RemoveEventFunc(CheckOnMoleHead) ropeCrate2 = SpawnSupplyCrate(2782, 1720, amRope, 100) rope2InProgress = true AddAmmo(youngh, amRope, 0) SetGearMessage(CurrentHedgehog, 0) -- Block the way to the hole to the right, since the player loses the rope for this section PlaceGirder(rope2GirderX, rope2GirderY, 6) - AddAnim(pastMoleHeadAnim) - AddEvent(CheckTookRope2, {}, DoTookRope2, {}, 0) -end - -function DoOnMoleHead() - -- Initiate parachute challenge - RemoveEventFunc(CheckPastMoleHead) - ropeCrate2 = SpawnSupplyCrate(2782, 1720, amRope, 100) - rope2InProgress = true - AddAmmo(youngh, amRope, 0) - SetGearMessage(CurrentHedgehog, 0) - -- Block the way to the hole to the right, since the player loses the rope for this section - PlaceGirder(rope2GirderX, rope2GirderY, 6) - AddAnim(onMoleHeadAnim) + if CheckPastMoleHead() then + AddAnim(pastMoleHeadAnim) + else + AddAnim(onMoleHeadAnim) + end AddEvent(CheckTookRope2, {}, DoTookRope2, {}, 0) end