From 29e4c2b5b03db6e4bfa5bddb876fcf2a9da1281d Mon Sep 17 00:00:00 2001 From: Binrui Dong Date: Sat, 6 Feb 2021 22:32:02 -0500 Subject: [PATCH] Fix freeze when player cannot contain mission reward --- src/npctalk.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/npctalk.cpp b/src/npctalk.cpp index 3376773ebd679..77d2e8acee3c3 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -1759,9 +1759,16 @@ void talk_effect_fun_t::set_u_buy_item( const itype_id &item_name, int cost, int item container( container_name, calendar::turn ); container.put_in( item( item_name, calendar::turn, count ), item_pocket::pocket_type::CONTAINER ); - d.alpha->i_add( container ); - //~ %1%s is the NPC name, %2$s is an item - popup( _( "%1$s gives you a %2$s." ), d.beta->disp_name(), container.tname() ); + if( d.alpha->get_character()->can_stash( container ) ) { + //~ %1$s is the NPC name, %2$s is an item + popup( _( "%1$s gives you a %2$s." ), d.beta->disp_name(), container.tname() ); + d.alpha->i_add( container ); + } else { + //~ %1$s and %3$s are the NPC name, %2$s is an item + popup( _( "%1$s gives you a %2$s, but you don't have enough space to hold it! %3$s placed it on the ground for you." ), + d.beta->disp_name(), container.tname(), d.beta->disp_name() ); + get_map().add_item( d.alpha->pos(), container ); + } } };