//========================================================= // AttemptToMaterialize - the item is trying to rematerialize, // should it do so now or wait longer? //========================================================= void CBasePlayerItem::AttemptToMaterialize( void ) { float time = g_pGameRules->FlWeaponTryRespawn( this ); if ( time == 0 ) { Materialize(); return; } pev->nextthink = gpGlobals->time + time; }
//========================================================= // FallThink - Items that have just spawned run this think // to catch them when they hit the ground. Once we're sure // that the object is grounded, we change its solid type // to trigger and set it in a large box that helps the // player get it. //========================================================= void CBasePlayerItem::FallThink ( void ) { pev->nextthink = gpGlobals->time + 0.1; if ( pev->flags & FL_ONGROUND ) { // clatter if we have an owner (i.e., dropped by someone) // don't clatter if the gun is waiting to respawn (if it's waiting, it is invisible!) if ( !FNullEnt( pev->owner ) ) { int pitch = 95 + RANDOM_LONG(0,29); EMIT_SOUND_DYN(ENT(pev), CHAN_VOICE, "items/weapondrop1.wav", 1, ATTN_NORM, 0, pitch); } // lie flat pev->angles.x = 0; pev->angles.z = 0; Materialize(); } }
//----------------------------------------------------------------------------- // Purpose: Items that have just spawned run this think to catch them when // they hit the ground. Once we're sure that the object is grounded, // we change its solid type to trigger and set it in a large box that // helps the player get it. //----------------------------------------------------------------------------- void CBaseHL1CombatWeapon::FallThink ( void ) { SetNextThink( gpGlobals->curtime + 0.1f ); if ( GetFlags() & FL_ONGROUND ) { // clatter if we have an owner (i.e., dropped by someone) // don't clatter if the gun is waiting to respawn (if it's waiting, it is invisible!) if ( GetOwnerEntity() ) { EmitSound( "BaseCombatWeapon.WeaponDrop" ); } // lie flat QAngle ang = GetAbsAngles(); ang.x = 0; ang.z = 0; SetAbsAngles( ang ); Materialize(); SetSize( Vector( -24, -24, 0 ), Vector( 24, 24, 16 ) ); } }