//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_CombineS::Spawn( void ) { Precache(); SetModel( STRING( GetModelName() ) ); if( IsElite() ) { // Stronger, tougher. SetHealth( sk_combine_guard_health.GetFloat() ); SetMaxHealth( sk_combine_guard_health.GetFloat() ); SetKickDamage( sk_combine_guard_kick.GetFloat() ); } else { SetHealth( sk_combine_s_health.GetFloat() ); SetMaxHealth( sk_combine_s_health.GetFloat() ); SetKickDamage( sk_combine_s_kick.GetFloat() ); } CapabilitiesAdd( bits_CAP_ANIMATEDFACE ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); CapabilitiesAdd( bits_CAP_DOORS_GROUP ); BaseClass::Spawn(); #if HL2_EPISODIC if (m_iUseMarch && !HasSpawnFlags(SF_NPC_START_EFFICIENT)) { Msg( "Soldier %s is set to use march anim, but is not an efficient AI. The blended march anim can only be used for dead-ahead walks!\n", GetDebugName() ); } #endif }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTDP_NPC_CombineS::Spawn( void ) { Precache(); SetModel( STRING( GetModelName() ) ); if( IsElite() ) { // Stronger, tougher. SetHealth( sk_combine_guard_health.GetFloat() ); SetMaxHealth( sk_combine_guard_health.GetFloat() ); SetKickDamage( sk_combine_guard_kick.GetFloat() ); } else { SetHealth( sk_combine_s_health.GetFloat() ); SetMaxHealth( sk_combine_s_health.GetFloat() ); SetKickDamage( sk_combine_s_kick.GetFloat() ); } CapabilitiesAdd( bits_CAP_ANIMATEDFACE ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); CapabilitiesAdd( bits_CAP_DOORS_GROUP ); BaseClass::Spawn(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_CombineShot::Spawn(void) { Precache(); SetModel( "models/combine_soldier_shotgunner.mdl" ); //Give him a random amount of grenades on spawn if (combine_shot_spawnwithgrenades.GetBool()) { if (g_pGameRules->IsSkillLevel(SKILL_HARD)) { m_iNumGrenades = random->RandomInt(2, 3); } else if (g_pGameRules->IsSkillLevel(SKILL_VERYHARD)) { m_iNumGrenades = random->RandomInt(4, 6); } else if (g_pGameRules->IsSkillLevel(SKILL_NIGHTMARE)) { m_iNumGrenades = random->RandomInt(8, 12); } else { m_iNumGrenades = random->RandomInt(0, 2); } } m_fIsElite = false; m_fIsAce = false; SetHealth( sk_combine_shot_health.GetFloat() ); SetMaxHealth( sk_combine_shot_health.GetFloat() ); SetKickDamage( sk_combine_shot_kick.GetFloat() ); CapabilitiesAdd( bits_CAP_ANIMATEDFACE ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); CapabilitiesAdd( bits_CAP_DOORS_GROUP ); BaseClass::Spawn(); #if HL2_EPISODIC if (m_iUseMarch && !HasSpawnFlags(SF_NPC_START_EFFICIENT)) { Msg( "Soldier %s is set to use march anim, but is not an efficient AI. The blended march anim can only be used for dead-ahead walks!\n", GetDebugName() ); } #endif }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_CombineAce::Spawn( void ) { Precache(); SetModel( "models/combine_ace_soldier.mdl" ); //Give him a random amount of grenades on spawn if (combine_ace_spawnwithgrenades.GetBool()) { if (g_pGameRules->IsSkillLevel(SKILL_HARD)) { m_iNumGrenades = random->RandomInt(2, 3); } else if (g_pGameRules->IsSkillLevel(SKILL_VERYHARD)) { m_iNumGrenades = random->RandomInt(4, 6); } else if (g_pGameRules->IsSkillLevel(SKILL_NIGHTMARE)) { m_iNumGrenades = random->RandomInt(8, 12); } else { m_iNumGrenades = random->RandomInt(0, 2); } } m_fIsElite = true; m_fIsAce = true; // Stronger, tougher. SetHealth(sk_combine_ace_health.GetFloat()); SetMaxHealth(sk_combine_ace_health.GetFloat()); SetKickDamage(sk_combine_ace_kick.GetFloat()); CapabilitiesAdd( bits_CAP_ANIMATEDFACE ); CapabilitiesAdd( bits_CAP_MOVE_SHOOT ); CapabilitiesAdd( bits_CAP_MOVE_JUMP ); CapabilitiesAdd( bits_CAP_DOORS_GROUP ); int attachment = LookupAttachment("eyes"); // Start up the eye glow m_pEyeSprite = CSprite::SpriteCreate("sprites/redglow1.vmt", GetLocalOrigin(), false); if (m_pEyeSprite != NULL) { m_pEyeSprite->SetAttachment(this, attachment); m_pEyeSprite->SetTransparency(kRenderTransAdd, 255, 255, 255, 200, kRenderFxNone); m_pEyeSprite->SetScale(0.25f); } // Start up the eye trail m_pEyeTrail = CSpriteTrail::SpriteTrailCreate("sprites/bluelaser1.vmt", GetLocalOrigin(), false); if (m_pEyeTrail != NULL) { m_pEyeTrail->SetAttachment(this, attachment); m_pEyeTrail->SetTransparency(kRenderTransAdd, 255, 0, 0, 200, kRenderFxNone); m_pEyeTrail->SetStartWidth(8.0f); m_pEyeTrail->SetLifeTime(0.75f); } SetEyeState(ACE_EYE_DORMANT); if (combine_ace_shieldspawnmode.GetInt() == 1) { SpawnArmorPieces(); } else if (combine_ace_shieldspawnmode.GetInt() > 1) { int iShieldRandom = random->RandomInt(0, 3); if (iShieldRandom == 0) { SpawnArmorPieces(); } else { pArmor = NULL; m_bNoArmor = true; } } else { pArmor = NULL; m_bNoArmor = true; } BaseClass::Spawn(); #if HL2_EPISODIC if (m_iUseMarch && !HasSpawnFlags(SF_NPC_START_EFFICIENT)) { Msg( "Soldier %s is set to use march anim, but is not an efficient AI. The blended march anim can only be used for dead-ahead walks!\n", GetDebugName() ); } #endif }