diff --git a/src/npctalk_funcs.cpp b/src/npctalk_funcs.cpp index 251fbde2ac15e..f7d0606c9aa13 100644 --- a/src/npctalk_funcs.cpp +++ b/src/npctalk_funcs.cpp @@ -972,6 +972,14 @@ void talk_function::drop_weapon( npc &p ) void talk_function::player_weapon_away( npc &/*p*/ ) { Character &player_character = get_player_character(); + + cata::optional bionic_weapon = player_character.find_bionic_by_uid( + player_character.get_weapon_bionic_uid() ); + if( bionic_weapon ) { + player_character.deactivate_bionic( **bionic_weapon ); + return; + } + player_character.i_add( player_character.remove_weapon() ); } diff --git a/src/talker_character.cpp b/src/talker_character.cpp index 6332d0a1f0eac..0cbcf355f0031 100644 --- a/src/talker_character.cpp +++ b/src/talker_character.cpp @@ -407,6 +407,12 @@ bool talker_character_const::unarmed_attack() const bool talker_character_const::can_stash_weapon() const { + cata::optional bionic_weapon = me_chr_const->find_bionic_by_uid( + me_chr_const->get_weapon_bionic_uid() ); + if( bionic_weapon && me_chr_const->can_deactivate_bionic( **bionic_weapon ).success() ) { + return true; + } + return me_chr_const->can_pickVolume( *me_chr_const->get_wielded_item() ); }