//----------------------------------------------------------------------------- // Purpose: Catches the monster-specific messages that occur when tagged // animation frames are played. // Input : *pEvent - //----------------------------------------------------------------------------- void CItem_AmmoCrate::HandleAnimEvent( animevent_t *pEvent ) { if ( pEvent->event == AE_AMMOCRATE_PICKUP_AMMO ) { if ( m_hActivator ) { if ( m_pGiveWeapon[m_nAmmoType] && !m_hActivator->Weapon_OwnsThisType( m_pGiveWeapon[m_nAmmoType] ) ) { CBaseEntity *pEntity = CreateEntityByName( m_pGiveWeapon[m_nAmmoType] ); CBaseCombatWeapon *pWeapon = dynamic_cast<CBaseCombatWeapon*>(pEntity); if ( pWeapon ) { pWeapon->SetAbsOrigin( m_hActivator->GetAbsOrigin() ); pWeapon->m_iPrimaryAmmoType = 0; pWeapon->m_iSecondaryAmmoType = 0; pWeapon->Spawn(); if ( !m_hActivator->BumpWeapon( pWeapon ) ) { UTIL_Remove( pEntity ); } else { SetBodygroup( 1, false ); } } } if ( m_hActivator->GiveAmmo( m_nAmmoAmounts[m_nAmmoType], m_nAmmoIndex ) != 0 ) { SetBodygroup( 1, false ); } m_hActivator = NULL; } return; } BaseClass::HandleAnimEvent( pEvent ); }