finale = {} function finale.init() character():breakUpParty(getPlayerSprite()) AddEnclosureZone("lucas", "hotspring_enclosure") MoveSpriteToWarp("kuma", "kumatora_start") SetDirection("kuma", Direction.UP) SetAnimation("kuma", "swim_still") MakeSpriteSolid("kuma") SetInteractionScript("kuma", "talk_to_kuma") MoveSpriteToWarp("duster", "duster_start") SetDirection("duster", Direction.RIGHT) SetAnimation("duster", "swim_still") MakeSpriteSolid("duster") SetInteractionScript("duster", "talk_to_duster") MoveSpriteToWarp("boney", "boney_start") SetDirection("boney", Direction.DOWN) SetAnimation("boney", "asleep") finale.WaitForMovement(15000) StartCutscene() if gamestate.approached_doria then DisplayMessage("* Kuma?\n\f* ... You know that people love you, right?", "Duster", SpeakerType.MAN) WaitForEndOfMessage() Delay(1000) SetDirection("kuma", Direction.UP_RIGHT) Delay(100) SetDirection("kuma", Direction.RIGHT) Delay(1000) DisplayMessage("* ......... Fuck you, Duster.", "Kumatora", SpeakerType.WOMAN) WaitForEndOfMessage() Delay(1000) SetDirection("kuma", Direction.UP_RIGHT) Delay(100) SetDirection("kuma", Direction.UP) Delay(1000) DisplayMessage("* Yeah... fuck me, I guess.", "Duster", SpeakerType.MAN) WaitForEndOfMessage() end HideCutsceneBars() end function finale.WaitForMovement(length) sprite = getSprite(getSpriteByAlias("lucas")) while length > 0 do dt = coroutine.yield() if sprite.characterState == CharacterState.WALKING then length = length - dt end end end function finale.talk_to_kuma() SetDirection("kuma", Direction.UP) StartCutscene() DisplayMessage("* Kumatora doesn't respond.\n\f* She is grumbling to herself, and picking at the grass growing over the wall.", "", SpeakerType.NONE) WaitForEndOfMessage() HideCutsceneBars() end function finale.talk_to_duster() SetDirection("duster", Direction.RIGHT) StartCutscene() DisplayMessage("* Duster doesn't respond.\n\f* He is simply staring at his own reflection in the water.", "", SpeakerType.NONE) WaitForEndOfMessage() HideCutsceneBars() end