/* ============ Killed ============ */ void CBaseMonster :: Killed( entvars_t *pevAttacker, int iGib ) { unsigned int cCount = 0; BOOL fDone = FALSE; CBaseEntity* theBaseEntity = CBaseEntity::Instance(pevAttacker->owner); if(!theBaseEntity) { theBaseEntity = CBaseEntity::Instance(pevAttacker); } ASSERT(theBaseEntity); theBaseEntity->AwardKill(this->pev); if ( HasMemory( bits_MEMORY_KILLED ) ) { if ( ShouldGibMonster( iGib ) ) CallGibMonster(); return; } Remember( bits_MEMORY_KILLED ); // clear the deceased's sound channels.(may have been firing or reloading when killed) EMIT_SOUND(ENT(pev), CHAN_WEAPON, "common/null.wav", 1, ATTN_NORM); m_IdealMonsterState = MONSTERSTATE_DEAD; // Make sure this condition is fired too (TakeDamage breaks out before this happens on death) SetConditions( bits_COND_LIGHT_DAMAGE ); // tell owner ( if any ) that we're dead.This is mostly for MonsterMaker functionality. CBaseEntity *pOwner = CBaseEntity::Instance(pev->owner); if ( pOwner ) { pOwner->DeathNotice( pev ); } if ( ShouldGibMonster( iGib ) ) { CallGibMonster(); return; } else if ( pev->flags & FL_MONSTER ) { SetTouch( NULL ); BecomeDead(); } // don't let the status bar glitch for players.with <0 health. if (pev->health < -99) { pev->health = 0; } //pev->enemy = ENT( pevAttacker );//why? (sjb) m_IdealMonsterState = MONSTERSTATE_DEAD; }
void CShalrath :: MonsterKilled( entvars_t *pevAttacker, int iGib ) { if( ShouldGibMonster( iGib )) { CGib::ThrowHead ("models/h_shal.mdl", pev); CGib::ThrowGib ("models/gib1.mdl", pev); CGib::ThrowGib ("models/gib2.mdl", pev); CGib::ThrowGib ("models/gib3.mdl", pev); UTIL_Remove( this ); return; } // regular death EMIT_SOUND( edict(), CHAN_VOICE, "shalrath/death.wav", 1.0, ATTN_NORM ); }
void CHellKnight :: MonsterKilled( entvars_t *pevAttacker, int iGib ) { if( ShouldGibMonster( iGib )) { EMIT_SOUND( edict(), CHAN_VOICE, "player/udeath.wav", 1.0, ATTN_NORM ); CGib::ThrowHead ("models/h_hellkn.mdl", pev); CGib::ThrowGib ("models/gib1.mdl", pev); CGib::ThrowGib ("models/gib2.mdl", pev); CGib::ThrowGib ("models/gib3.mdl", pev); UTIL_Remove( this ); return; } // regular death EMIT_SOUND( edict(), CHAN_VOICE, "hknight/death1.wav", 1.0, ATTN_NORM ); }
void COgre :: MonsterKilled( entvars_t *pevAttacker, int iGib ) { if( ShouldGibMonster( iGib )) { EMIT_SOUND( edict(), CHAN_VOICE, "player/udeath.wav", 1.0, ATTN_NORM ); CGib::ThrowHead ("models/h_ogre.mdl", pev); CGib::ThrowGib ("models/gib3.mdl", pev); CGib::ThrowGib ("models/gib3.mdl", pev); CGib::ThrowGib ("models/gib3.mdl", pev); UTIL_Remove( this ); return; } // regular death EMIT_SOUND( edict(), CHAN_VOICE, "ogre/ogdth.wav", 1.0, ATTN_NORM ); }
void CShambler :: MonsterKilled( entvars_t *pevAttacker, int iGib ) { if( pev->owner ) { // remove lightning (if present) CBaseEntity *pLightning = CBaseEntity::Instance( pev->owner ); if( pLightning ) UTIL_Remove( pLightning ); pev->owner = NULL; } if( ShouldGibMonster( iGib )) { EMIT_SOUND( edict(), CHAN_VOICE, "player/udeath.wav", 1.0, ATTN_NORM ); CGib::ThrowHead ("models/h_shams.mdl", pev); CGib::ThrowGib ("models/gib1.mdl", pev); CGib::ThrowGib ("models/gib2.mdl", pev); CGib::ThrowGib ("models/gib3.mdl", pev); UTIL_Remove( this ); return; } // regular death EMIT_SOUND( edict(), CHAN_VOICE, "shambler/sdeath.wav", 1.0, ATTN_NORM ); }