Disable autoforward if player is dead
authorANAND <ClobberXD@gmail.com>
Sat, 4 May 2019 07:13:31 +0000 (12:43 +0530)
committerSmallJoker <mk939@ymail.com>
Tue, 20 Aug 2019 16:48:28 +0000 (18:48 +0200)
src/client/content_cao.cpp
src/client/game.cpp
src/client/localplayer.cpp
src/client/localplayer.h

index ce0e31839b85f78be7def1350dd56a9f5e7bf601..e76cacdd47799b5f67fb2a067d0c2393cb64a8ec 100644 (file)
@@ -1541,6 +1541,9 @@ void GenericCAO::processMessage(const std::string &data)
 
                m_hp = result_hp;
 
+               if (m_is_local_player)
+                       m_env->getLocalPlayer()->hp = m_hp;
+
                if (damage > 0)
                {
                        if (m_hp <= 0)
index 8413578100b7b7f153f12639126a60282558d29c..4d5fbfb97b68a96ae890ad064b6afeced05669a0 100644 (file)
@@ -2466,7 +2466,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam)
        }
 
        // autoforward if set: simulate "up" key
-       if (player->getPlayerSettings().continuous_forward) {
+       if (player->getPlayerSettings().continuous_forward && !player->isDead()) {
                control.up = true;
                keypress_bits |= 1U << 0;
        }
@@ -2483,7 +2483,7 @@ inline void Game::step(f32 *dtime)
        bool can_be_and_is_paused =
                        (simple_singleplayer_mode && g_menumgr.pausesGame());
 
-       if (can_be_and_is_paused) {     // This is for a singleplayer server
+       if (can_be_and_is_paused) { // This is for a singleplayer server
                *dtime = 0;             // No time passes
        } else {
                if (server)
index 39e290c5b729661a22d31f860a329778504a1cbe..1b0b667c83c284cc8758a9fadc3249166be18454 100644 (file)
@@ -259,7 +259,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
        }
 
        /*
-               Check if player is climbing
+                       Check if player is climbing
        */
 
 
@@ -489,7 +489,7 @@ void LocalPlayer::applyControl(float dtime, Environment *env)
        PlayerSettings &player_settings = getPlayerSettings();
 
        // All vectors are relative to the player's yaw,
-       // (and pitch if pitch fly mode enabled),
+       // (and pitch if pitch move mode enabled),
        // and will be rotated at the end
        v3f speedH = v3f(0,0,0); // Horizontal (X, Z)
        v3f speedV = v3f(0,0,0); // Vertical (Y)
@@ -930,11 +930,11 @@ void LocalPlayer::old_move(f32 dtime, Environment *env, f32 pos_max_d,
        bool touching_ground_was = touching_ground;
        touching_ground = result.touching_ground;
 
-    //bool standing_on_unloaded = result.standing_on_unloaded;
+       //bool standing_on_unloaded = result.standing_on_unloaded;
 
        /*
                Check the nodes under the player to see from which node the
-               player is sneaking from, if any.  If the node from under
+               player is sneaking from, if any. If the node from under
                the player has been removed, the player falls.
        */
        f32 position_y_mod = 0.05 * BS;
index 16e7996ae8ebba9f92eb198bfbfe2490939ad428..252519aaaa4d06cc833e7f0de427752b60f3eaa2 100644 (file)
@@ -100,7 +100,7 @@ public:
        bool makes_footstep_sound = true;
 
        int last_animation = NO_ANIM;
-       float last_animation_speed;
+       float last_animation_speed = 0.0f;
 
        std::string hotbar_image = "";
        std::string hotbar_selected_image = "";
@@ -149,6 +149,8 @@ public:
 
        bool getAutojump() const { return m_autojump; }
 
+       bool isDead() const { return hp <= 0; }
+
        inline void addVelocity(const v3f &vel)
        {
                added_velocity += vel;