From dbc28c87fefbceb4eaec522b535f9034b05fe3f2 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Thu, 4 Mar 2021 22:11:34 -0500 Subject: Started "Claus falls off ladder" scene --- res/scripts/hallucination_cliff.lua | 83 +++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'res/scripts/hallucination_cliff.lua') diff --git a/res/scripts/hallucination_cliff.lua b/res/scripts/hallucination_cliff.lua index 250c0cf..d4ba921 100644 --- a/res/scripts/hallucination_cliff.lua +++ b/res/scripts/hallucination_cliff.lua @@ -13,3 +13,86 @@ function hallucination_cliff.enter_door() PlaySound("door_open.wav") ChangeMap("pink_shell", "fromOutside") end + +function hallucination_cliff.claus_fall_event() + -- do not trigger if we don't have claus + if not gamestate.still_has_claus then + return + end + + -- do not trigger a second time + if gamestate.claus_fall_scene then + return + end + + gamestate.claus_fall_scene = true + + -- have the player automatically climb most of the ladder. this is to ensure + -- that Claus is off screen when the event triggers. + DisablePlayerControl() + Halt("lucas") + DirectSpriteToLocation("lucas", "near_top_first_ladder", PathfindingOptions.CARDINAL_DIRECTIONS_ONLY) + WaitForSpritePath("lucas") + DisableBehaviour("lucas") + + StartCutscene(CutsceneOptions.DO_NOT_CHANGE_ANIMATION) + DisplayMessage("* Aiee!", "Claus", SpeakerType.MAN) + PlaySound("wobble_and_fall.wav") + WaitForEndOfMessage() + + Delay(1000) + + PlaySound("thud.wav") + ShakeCamera(100) + Delay(50) + + ShowExpression("lucas", "surprise") + Delay(50) + + ShowExpression("kuma", "surprise") + ShowExpression("duster", "surprise") + Delay(100) + + StopShakingCamera() + Delay(1000) + + MoveSpriteToWarp("join_claus", "claus_fall_location") + SetDirection("join_claus", Direction.LEFT) + SetAnimation("join_claus", "collapsed") + PanToSprite("join_claus", 4000) + Delay(1000) + + RemoveExpression("lucas") + RemoveExpression("kuma") + RemoveExpression("duster") + WaitForPan() + + Delay(1000) + + -- we need to break up the party to detach Claus anyway, and while we're there + -- we should turn down the movement speed because the pathfinding algorithm + -- doesn't take media into consideration, and if we don't change the speed + -- before adding the other characters back, they'll bunch up as they move down + BreakUpParty("lucas") + SetMovementSpeed("lucas", 1) + character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("kuma")) + character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("duster")) + character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("boney")) + + UnpauseSprite("lucas") + DirectSpriteToLocation("lucas", "near_bottom_first_ladder", PathfindingOptions.CARDINAL_DIRECTIONS_ONLY) + WaitForSpritePath("lucas") + DisableBehaviour("lucas") + PauseSprite("lucas") + SetAnimation("lucas", "frozen") -- so he doesn't blink + + -- TODO: rest of scene + + -- same as before but less justifiable because the only reason we're doing + -- this is to fix the movement trails + -- BreakUpParty("lucas") + -- SetMovementSpeed("lucas", 2) + -- character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("kuma")) + -- character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("duster")) + -- character():addSpriteToParty(getPlayerSprite(), getSpriteByAlias("boney")) +end -- cgit 1.4.1