From 88bd7c5b3f7046df2bfcb950269b2c9ca19bbf14 Mon Sep 17 00:00:00 2001 From: Brockengespenst Date: Mon, 15 Sep 2025 23:50:39 +0200 Subject: [PATCH 1/3] Fix Zeekling jittering after death Fixes #3353 --- src/badguy/zeekling.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/badguy/zeekling.cpp b/src/badguy/zeekling.cpp index 26b38056ebc..a237a5371d3 100644 --- a/src/badguy/zeekling.cpp +++ b/src/badguy/zeekling.cpp @@ -104,18 +104,12 @@ Zeekling::on_bump_vertical() void Zeekling::collision_solid(const CollisionHit& hit) { - if (m_frozen) + if (m_frozen || !is_active()) { BadGuy::collision_solid(hit); return; } - if (BadGuy::get_state() == STATE_SQUISHED || - BadGuy::get_state() == STATE_BURNING) - { - return; - } - if (hit.top || hit.bottom) on_bump_vertical(); else if (hit.left || hit.right) From 01f6706464d9feb2dff822babe64640f3ab31873 Mon Sep 17 00:00:00 2001 From: Brockengespenst Date: Tue, 16 Sep 2025 00:02:01 +0200 Subject: [PATCH 2/3] Do not set badguy's x-velocity to zero if ignited or squished in air --- src/badguy/badguy.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/badguy/badguy.cpp b/src/badguy/badguy.cpp index 6a82c214862..718f2fb2923 100644 --- a/src/badguy/badguy.cpp +++ b/src/badguy/badguy.cpp @@ -720,7 +720,11 @@ BadGuy::kill_squished(GameObject& object) SoundManager::current()->play("sounds/squish.wav", get_pos()); m_physic.enable_gravity(true); - m_physic.set_velocity(0, 0); + + if (on_ground()) + m_physic.set_velocity(0, 0); + else + m_physic.set_velocity_y(0.0f); set_state(STATE_SQUISHED); set_group(COLGROUP_MOVING_ONLY_STATIC); auto player = dynamic_cast(&object); @@ -1194,7 +1198,12 @@ BadGuy::ignite() unfreeze(); m_physic.enable_gravity(true); - m_physic.set_velocity(0, 0); + + if (on_ground()) + m_physic.set_velocity(0, 0); + else + m_physic.set_velocity_y(0.0f); + set_group(COLGROUP_MOVING_ONLY_STATIC); m_sprite->stop_animation(); m_ignited = true; From 23376f281ef1c8e6fb1c149206728fd9bc3a37b8 Mon Sep 17 00:00:00 2001 From: Brockengespenst Date: Tue, 16 Sep 2025 18:25:11 +0200 Subject: [PATCH 3/3] Fix WalkingBadguy handling when inactive --- src/badguy/bouncing_snowball.cpp | 9 +++++---- src/badguy/walking_badguy.cpp | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/badguy/bouncing_snowball.cpp b/src/badguy/bouncing_snowball.cpp index 5e1b5e372c6..902e4a50748 100644 --- a/src/badguy/bouncing_snowball.cpp +++ b/src/badguy/bouncing_snowball.cpp @@ -131,15 +131,16 @@ BouncingSnowball::collision_squished(MovingObject& object) void BouncingSnowball::collision_solid(const CollisionHit& hit) { - if (m_sprite->get_action() == "squished") - return; - - if (m_frozen) + if (m_frozen || !is_active()) { BadGuy::collision_solid(hit); return; } + if (m_sprite->get_action() == "squished") + return; + + if (hit.bottom) { if (get_state() == STATE_ACTIVE) { float bounce_speed = -m_physic.get_velocity_y()*0.8f; diff --git a/src/badguy/walking_badguy.cpp b/src/badguy/walking_badguy.cpp index efa6b743343..8916de97308 100644 --- a/src/badguy/walking_badguy.cpp +++ b/src/badguy/walking_badguy.cpp @@ -187,7 +187,7 @@ WalkingBadguy::collision_solid(const CollisionHit& hit) update_on_ground_flag(hit); - if (m_frozen) + if (m_frozen || !is_active()) { BadGuy::collision_solid(hit); return;