From 550f88da7001628abd5f94e1d4c8a1d39f010672 Mon Sep 17 00:00:00 2001 From: David Seguin Date: Fri, 18 Feb 2022 21:07:35 -0500 Subject: [PATCH] Ignore autopickup setting when transfering liquids --- src/activity_handlers.cpp | 2 +- src/character.cpp | 4 ++-- src/character.h | 2 +- src/handle_liquid.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/activity_handlers.cpp b/src/activity_handlers.cpp index 97b1eb43a7555..8484d3dfd556e 100644 --- a/src/activity_handlers.cpp +++ b/src/activity_handlers.cpp @@ -1419,7 +1419,7 @@ void activity_handlers::fill_liquid_do_turn( player_activity *act, Character *yo break; } case liquid_target_type::CONTAINER: - you->pour_into( *act_ref.targets.at( 0 ), liquid ); + you->pour_into( *act_ref.targets.at( 0 ), liquid, true ); break; case liquid_target_type::MAP: if( iexamine::has_keg( act_ref.coords.at( 1 ) ) ) { diff --git a/src/character.cpp b/src/character.cpp index 0b1d02667b72e..cffb5ae4a171f 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -5561,7 +5561,7 @@ bool Character::sees_with_specials( const Creature &critter ) const return false; } -bool Character::pour_into( item &container, item &liquid ) +bool Character::pour_into( item &container, item &liquid, bool ignore_settings ) { std::string err; const int amount = container.get_remaining_capacity_for_liquid( liquid, *this, &err ); @@ -5581,7 +5581,7 @@ bool Character::pour_into( item &container, item &liquid ) add_msg_if_player( _( "You pour %1$s into the %2$s." ), liquid.tname(), container.tname() ); - liquid.charges -= container.fill_with( liquid, amount ); + liquid.charges -= container.fill_with( liquid, amount, false, false, ignore_settings ); inv->unsort(); if( liquid.charges > 0 ) { diff --git a/src/character.h b/src/character.h index fe96756d553c9..6dffe41e6b1bd 100644 --- a/src/character.h +++ b/src/character.h @@ -1760,7 +1760,7 @@ class Character : public Creature, public visitable * possible at all. `true` indicates at least some of the liquid has been moved. */ /**@{*/ - bool pour_into( item &container, item &liquid ); + bool pour_into( item &container, item &liquid, bool ignore_settings ); bool pour_into( const vpart_reference &vp, item &liquid ) const; /**@}*/ diff --git a/src/handle_liquid.cpp b/src/handle_liquid.cpp index 1e908f70884e2..a4872583be2ea 100644 --- a/src/handle_liquid.cpp +++ b/src/handle_liquid.cpp @@ -372,7 +372,7 @@ static bool perform_liquid_transfer( item &liquid, const tripoint *const source_ // not on ground or similar. TODO: implement storing arbitrary container locations. if( target.item_loc && create_activity() ) { serialize_liquid_target( player_character.activity, target.item_loc ); - } else if( player_character.pour_into( *target.item_loc, liquid ) ) { + } else if( player_character.pour_into( *target.item_loc, liquid, true ) ) { if( target.item_loc->needs_processing() ) { // Polymorphism fail, have to introspect into the type to set the target container as active. switch( target.item_loc.where() ) {