diff --git a/base/src/server/items.qc b/base/src/server/items.qc index 601bf7cb..56df9e51 100644 --- a/base/src/server/items.qc +++ b/base/src/server/items.qc @@ -17,10 +17,17 @@ void item_pickup::Touch(entity eToucher) { + player pl = (player)eToucher; + if (eToucher.classname != "player") { return; } + /* don't allow players inside vehicles to pick anything up by accident */ + if (eToucher.flags & FL_INVEHICLE || pl.vehicle) { + return; + } + /* don't remove if AddItem fails */ if (Weapons_AddItem((base_player)eToucher, id, m_iClip) == FALSE) { return; @@ -63,7 +70,6 @@ item_pickup::Respawn(void) SetOrigin(GetSpawnOrigin()); /* At some points, the item id might not yet be set */ - if (m_oldModel) { SetModel(m_oldModel); } @@ -75,6 +81,9 @@ item_pickup::Respawn(void) if (!m_iWasDropped) { m_iClip = -1; + } else { + if (time > 30.0f) + Sound_Play(this, CHAN_ITEM, "item.respawn"); } if (!m_bFloating) { diff --git a/base/src/shared/input.qc b/base/src/shared/input.qc index 0bb24389..193f08f5 100644 --- a/base/src/shared/input.qc +++ b/base/src/shared/input.qc @@ -36,6 +36,11 @@ Game_Input(player pl) pl.impulse = 0; #endif + if (pl.health <= 0) { + Weapons_Release(pl); + return; + } + if (input_buttons & INPUT_BUTTON0) Weapons_Primary(pl); else if (input_buttons & INPUT_BUTTON4)