diff --git a/src/g_shared/a_weapons.cpp b/src/g_shared/a_weapons.cpp index a59e8f564f..c5035e416a 100644 --- a/src/g_shared/a_weapons.cpp +++ b/src/g_shared/a_weapons.cpp @@ -727,6 +727,7 @@ bool AWeaponGiver::TryPickup(AActor *&toucher) if (weap != NULL) { weap->ItemFlags &= ~IF_ALWAYSPICKUP; // use the flag of this item only. + weap->flags = (weap->flags & ~MF_DROPPED) | (this->flags & MF_DROPPED); if (AmmoGive1 >= 0) weap->AmmoGive1 = AmmoGive1; if (AmmoGive2 >= 0) weap->AmmoGive2 = AmmoGive2; weap->BecomeItem(); @@ -736,7 +737,11 @@ bool AWeaponGiver::TryPickup(AActor *&toucher) weap = barrier_cast(master); bool res = weap->CallTryPickup(toucher); - if (res) GoAwayAndDie(); + if (res) + { + GoAwayAndDie(); + master = NULL; + } return res; } }