diff --git a/base/src/server/items.qc b/base/src/server/items.qc index 6c39d4f3..e6b64b50 100644 --- a/base/src/server/items.qc +++ b/base/src/server/items.qc @@ -41,11 +41,10 @@ item_pickup::Touch(entity eToucher) #endif if (real_owner || m_iWasDropped == 1 || cvar("sv_playerslots") == 1) { - remove(self); + Destroy(); } else { - Hide(); - think = Respawn; - nextthink = time + 30.0f; + Disappear(); + ScheduleThink(Respawn, 30.0f); } } @@ -75,9 +74,7 @@ item_pickup::Respawn(void) } SetSize([-16,-16,0], [16,16,16]); - - think = __NULL__; - nextthink = -1; + ReleaseThink(); if (!m_iWasDropped) { m_iClip = -1; diff --git a/src/server/weapons.qc b/src/server/weapons.qc index 745402b3..803f9c2c 100644 --- a/src/server/weapons.qc +++ b/src/server/weapons.qc @@ -331,7 +331,6 @@ Weapon_DropCurrentWeapon void Weapon_DropCurrentWeapon(NSClientPlayer pl) { - static void DropWeapon_Enable(void) { self.solid = SOLID_TRIGGER; @@ -346,17 +345,19 @@ Weapon_DropCurrentWeapon(NSClientPlayer pl) item_pickup drop = spawn(item_pickup); drop.m_iWasDropped = TRUE; drop.m_iClip = pl.a_ammo1; + drop.real_owner = pl; + drop.owner = pl; drop.SetItem(pl.activeweapon); - setorigin(drop, pl.origin); - drop.solid = SOLID_NOT; - drop.think = DropWeapon_Enable; - drop.nextthink = time + 1.5f; - drop.movetype = MOVETYPE_TOSS; + drop.SetSolid(SOLID_NOT); + drop.SetOrigin(pl.origin); + drop.ScheduleThink(DropWeapon_Enable, 1.5f); + drop.SetMovetype(MOVETYPE_TOSS); drop.classname = "remove_me"; + drop.SetGravity(1.0f); - makevectors(pl.v_angle); - drop.velocity = v_forward * 256; - drop.avelocity[1] = 500; + makevectors([-fabs(pl.v_angle[0]), pl.v_angle[1], 0]); + drop.SetVelocity(v_forward * 256); + drop.SetAngularVelocity([0.0f, 500.0f, 0.0f]); Weapons_RemoveItem(pl, pl.activeweapon); }