bool HasContentsGrate( CBaseEntity *pEntity ) { // FIXME: Move this into the GetModelContents() function in base entity // Find the contents based on the model type int nModelType = modelinfo->GetModelType( pEntity->GetModel() ); if ( nModelType == mod_studio ) { CBaseAnimating *pAnim = dynamic_cast<CBaseAnimating *>(pEntity); if ( pAnim != NULL ) { CStudioHdr *pStudioHdr = pAnim->GetModelPtr(); if ( pStudioHdr != NULL && (pStudioHdr->contents() & CONTENTS_GRATE) ) return true; } } else if ( nModelType == mod_brush ) { // Brushes poll their contents differently int contents = modelinfo->GetModelContents( pEntity->GetModelIndex() ); if ( contents & CONTENTS_GRATE ) return true; } return false; }
//----------------------------------------------------------------------------- // Zap! //----------------------------------------------------------------------------- void CRagdollBoogie::ZapThink() { if (!GetMoveParent()) return; CBaseAnimating *pRagdoll = GetMoveParent()->GetBaseAnimating(); if (!pRagdoll) return; // Make electricity on the client CStudioHdr *pStudioHdr = pRagdoll->GetModelPtr(); if (!pStudioHdr) return; mstudiohitboxset_t *set = pStudioHdr->pHitboxSet(pRagdoll->GetHitboxSet()); if (set->numhitboxes == 0) return; if (m_nSuppressionCount == 0) { CEffectData data; data.m_nEntIndex = GetMoveParent()->entindex(); data.m_flMagnitude = 4; data.m_flScale = HasSpawnFlags(SF_RAGDOLL_BOOGIE_ELECTRICAL_NARROW_BEAM) ? 1.0f : 2.0f; DispatchEffect("TeslaHitboxes", data); } SetContextThink(&CRagdollBoogie::ZapThink, gpGlobals->curtime + random->RandomFloat(0.1f, 0.3f), s_pZapContext); }