From af49b5366d35173702a2b3bd70ac4254b8855538 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Fri, 26 Feb 2021 16:55:44 -0500 Subject: Disabled crouching/running in the underwater map --- res/scripts/common.lua | 14 ++++++++++++++ res/scripts/underwater.lua | 4 ++++ res/scripts/underwater_start.lua | 4 ++++ src/character_system.cpp | 3 ++- src/script_system.cpp | 3 ++- src/sprite.h | 1 + 6 files changed, 27 insertions(+), 2 deletions(-) diff --git a/res/scripts/common.lua b/res/scripts/common.lua index e95f6f1..895ad7b 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua @@ -315,3 +315,17 @@ function StopClipping() local playerSprite = getSprite(playerId) playerSprite.clipping = false end + +--- Turns off crouching (and thus running) for the player. +function PreventCrouching() + local playerId = getPlayerSprite() + local playerSprite = getSprite(playerId) + playerSprite.cantCrouch = true +end + +--- Undoes the effect of PreventCrouching(). +function AllowCrouching() + local playerId = getPlayerSprite() + local playerSprite = getSprite(playerId) + playerSprite.cantCrouch = false +end diff --git a/res/scripts/underwater.lua b/res/scripts/underwater.lua index 602c8d4..4c5d2bb 100644 --- a/res/scripts/underwater.lua +++ b/res/scripts/underwater.lua @@ -1,5 +1,9 @@ underwater = {} +function underwater.leave() + AllowCrouching() +end + function underwater.fish2() StartCutscene() DisplayMessage("* What are you complaining about?\nYou're so powerful now...\n\fYou owe it all to her.", "Fish", SpeakerType.BOY) diff --git a/res/scripts/underwater_start.lua b/res/scripts/underwater_start.lua index fe582ab..98a6e67 100644 --- a/res/scripts/underwater_start.lua +++ b/res/scripts/underwater_start.lua @@ -1,5 +1,9 @@ underwater_start = {} +function underwater_start.init() + PreventCrouching() +end + function underwater_start.talk_to_fish1() StartCutscene() DisplayMessage("* You deserved what she did to you.", "Fish", SpeakerType.BOY) diff --git a/src/character_system.cpp b/src/character_system.cpp index a24bdcc..87407af 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp @@ -237,7 +237,8 @@ void CharacterSystem::beginCrouch(int spriteId) { stopRunning(spriteId); } else { if (sprite.characterMedium == CharacterMedium::Ladder || - sprite.characterMedium == CharacterMedium::Water) { + sprite.characterMedium == CharacterMedium::Water || + sprite.cantCrouch) { return; } diff --git a/src/script_system.cpp b/src/script_system.cpp index 31b8bee..92e6afe 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp @@ -39,7 +39,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { }, "persistent", &Sprite::persistent, "paused", &Sprite::paused, - "clipping", &Sprite::clipping); + "clipping", &Sprite::clipping, + "cantCrouch", &Sprite::cantCrouch); engine_.new_usertype( "message", diff --git a/src/sprite.h b/src/sprite.h index 32a082c..657a692 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -91,6 +91,7 @@ public: StepType stepType = StepType::none; int runningSfxChannel = -1; bool clipping = false; + bool cantCrouch = false; // Use this to prevent running // Input bool controllable = false; -- cgit 1.4.1