From faf04e5465cc51848520f338fd65f83b54c2e1e6 Mon Sep 17 00:00:00 2001 From: cbnbugfix2 Date: Tue, 26 Sep 2023 06:16:28 +0200 Subject: [PATCH 1/2] fix: NPCs no longer drown eternally after being thrown. An NPC that was thrown into water would eternally drown, even after getting back on land. This also fixes that NPCs take damage from drowning normally while being submerged in deep water after walking into it instead of being thrown into it, which may not be a desirable change, since NPC behaviour does not currently include a lot of deep water avoidance. --- src/npcmove.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/npcmove.cpp b/src/npcmove.cpp index a84a864ca6ac..bb6354c8acd0 100644 --- a/src/npcmove.cpp +++ b/src/npcmove.cpp @@ -2456,6 +2456,7 @@ void npc::move_to( const tripoint &pt, bool no_bashing, std::set *nomo if( moved ) { const tripoint old_pos = pos(); setpos( p ); + set_underwater( g->m.is_divable( p ) ); if( old_pos.x - p.x < 0 ) { facing = FD_RIGHT; } else { From 4bb5585bedef32499f8798c35df94da3b3f0f1c4 Mon Sep 17 00:00:00 2001 From: cbnbugfix2 Date: Tue, 26 Sep 2023 09:06:24 +0200 Subject: [PATCH 2/2] fix: Disable NPCs taking damage from drowning. --- src/suffer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/suffer.cpp b/src/suffer.cpp index acc6a8dc50e7..18f3ae6cb508 100644 --- a/src/suffer.cpp +++ b/src/suffer.cpp @@ -253,7 +253,12 @@ void Character::suffer_while_underwater() mod_power_level( -bio_gills->power_trigger ); } else { add_msg_if_player( m_bad, _( "You're drowning!" ) ); - apply_damage( nullptr, bodypart_id( "torso" ), rng( 1, 4 ) ); + // NPCs are not currently programmed to avoid or get out of deep water, + // so disable drowning damage for them. + // https://github.com/cataclysmbnteam/Cataclysm-BN/issues/3266 + if( !is_npc() ) { + apply_damage( nullptr, bodypart_id( "torso" ), rng( 1, 4 ) ); + } } } if( has_trait( trait_FRESHWATEROSMOSIS ) && !get_map().has_flag_ter( "SALT_WATER", pos() ) &&