//----------------------------------------------------------- // //----------------------------------------------------------- class ZombieBoss_XMas extends ZombieBoss; #exec OBJ LOAD FILE=KF_EnemiesFinalSnd_Xmas.uax #exec OBJ LOAD FILE=KF_Specimens_Trip_XMAS_T.utx simulated function CloakBoss() { local Controller C; local int Index; // No cloaking if zapped if( bZapped ) { return; } if ( bSpotted ) { Visibility = 120; if ( Level.NetMode==NM_DedicatedServer ) { Return; } Skins[0] = Finalblend'KFX.StalkerGlow'; Skins[1] = Finalblend'KFX.StalkerGlow'; bUnlit = true; return; } Visibility = 1; bCloaked = true; if ( Level.NetMode!=NM_Client ) { for ( C=Level.ControllerList; C!=None; C=C.NextController ) { if ( C.bIsPlayer && C.Enemy==Self ) { C.Enemy = None; // Make bots lose sight with me. } } } if( Level.NetMode==NM_DedicatedServer ) { Return; } Skins[1] = Shader'KF_Specimens_Trip_T.patriarch_invisible_gun'; Skins[0] = Shader'KF_Specimens_Trip_XMAS_T.patriarch_Santa.patriarch_santa_invisible_shdr'; // Invisible - no shadow if(PlayerShadow != none) { PlayerShadow.bShadowActive = false; } // Remove/disallow projectors on invisible people Projectors.Remove(0, Projectors.Length); bAcceptsProjectors = false; SetOverlayMaterial(FinalBlend'KF_Specimens_Trip_T.patriarch_fizzle_FB', 1.0, true); // Randomly send out a message about Patriarch going invisible(10% chance) if ( FRand() < 0.10 ) { // Pick a random Player to say the message Index = Rand(Level.Game.NumPlayers); for ( C = Level.ControllerList; C != none; C = C.NextController ) { if ( PlayerController(C) != none ) { if ( Index == 0 ) { PlayerController(C).Speech('AUTO', 8, ""); break; } Index--; } } } } // Speech notifies called from the anims function PatriarchKnockDown() { PlaySound(SoundGroup'KF_EnemiesFinalSnd_Xmas.Patriarch.Kev_KnockedDown', SLOT_Misc, 2.0,true,500.0); } function PatriarchEntrance() { PlaySound(SoundGroup'KF_EnemiesFinalSnd_Xmas.Patriarch.Kev_Entrance', SLOT_Misc, 2.0,true,500.0); } function PatriarchVictory() { PlaySound(SoundGroup'KF_EnemiesFinalSnd_Xmas.Patriarch.Kev_Victory', SLOT_Misc, 2.0,true,500.0); } function PatriarchMGPreFire() { PlaySound(SoundGroup'KF_EnemiesFinalSnd_Xmas.Patriarch.Kev_WarnGun', SLOT_Misc, 2.0,true,1000.0); } function PatriarchMisslePreFire() { PlaySound(SoundGroup'KF_EnemiesFinalSnd_Xmas.Patriarch.Kev_WarnRocket', SLOT_Misc, 2.0,true,1000.0); } state KnockDown // Knocked { function bool ShouldChargeFromDamage() { return false; } Begin: if ( Health > 0 ) { Sleep(GetAnimDuration('KnockDown')); CloakBoss(); PlaySound(sound'KF_EnemiesFinalSnd_Xmas.Patriarch.Kev_SaveMe', SLOT_Misc, 2.0,,500.0); if ( KFGameType(Level.Game).FinalSquadNum == SyringeCount ) { KFGameType(Level.Game).AddBossBuddySquad(); } GotoState('Escaping'); } else { GotoState(''); } } static simulated function PreCacheMaterials(LevelInfo myLevel) {//should be derived and used. myLevel.AddPrecacheMaterial(Combiner'KF_Specimens_Trip_XMAS_T.gatling_cmb'); myLevel.AddPrecacheMaterial(Combiner'KF_Specimens_Trip_T.gatling_env_cmb'); myLevel.AddPrecacheMaterial(Texture'KF_Specimens_Trip_T.gatling_D'); myLevel.AddPrecacheMaterial(Combiner'KF_Specimens_Trip_T.PatGungoInvisible_cmb'); myLevel.AddPrecacheMaterial(Combiner'KF_Specimens_Trip_XMAS_T.patriarch_Santa.patriarch_Santa_cmb'); myLevel.AddPrecacheMaterial(Combiner'KF_Specimens_Trip_XMAS_T.patriarch_Santa_env_cmb'); myLevel.AddPrecacheMaterial(Texture'KF_Specimens_Trip_XMAS_T.patriarch_Santa_Diff'); myLevel.AddPrecacheMaterial(Material'KF_Specimens_Trip_T.patriarch_invisible'); myLevel.AddPrecacheMaterial(Material'KF_Specimens_Trip_T.patriarch_invisible_gun'); myLevel.AddPrecacheMaterial(Material'KF_Specimens_Trip_T.patriarch_fizzle_FB'); //myLevel.AddPrecacheMaterial(Texture'kf_fx_trip_t.Gore.Patriarch_Gore_Limbs_Diff'); //myLevel.AddPrecacheMaterial(Texture'kf_fx_trip_t.Gore.Patriarch_Gore_Limbs_Spec'); } DefaultProperties { Mesh=SkeletalMesh'KF_Freaks_Trip_Xmas.SantaClause_Patriarch' Skins(0)=Combiner'KF_Specimens_Trip_XMAS_T.patriarch_Santa.patriarch_Santa_cmb' Skins(1)=Combiner'KF_Specimens_Trip_XMAS_T.gatling_cmb' DetachedArmClass=class'SeveredArmPatriarch_XMas' DetachedLegClass=class'SeveredLegPatriarch_XMas' DetachedHeadClass=class'SeveredHeadPatriarch_XMas' HitSound(0)=Sound'KF_EnemiesFinalSnd_Xmas.Kev_Pain' AmbientSound=Sound'KF_EnemiesFinalSnd_Xmas.Idle.Kev_IdleLoop' MoanVoice=Sound'KF_EnemiesFinalSnd_Xmas.Kev_Talk' DeathSound(0)=Sound'KF_EnemiesFinalSnd_Xmas.Kev_Death' JumpSound=Sound'KF_EnemiesFinalSnd_Xmas.Kev_Jump' MeleeAttackHitSound=sound'KF_EnemiesFinalSnd_Xmas.Kev_HitPlayer_Fist' MeleeImpaleHitSound=sound'KF_EnemiesFinalSnd_Xmas.Kev_HitPlayer_Impale' RocketFireSound=sound'KF_EnemiesFinalSnd_Xmas.Kev_FireRocket' MiniGunFireSound=sound'KF_BasePatriarch_Xmas.Kev_MG_GunfireLoop' MiniGunSpinSound=Sound'KF_BasePatriarch_Xmas.Attack.Kev_MG_TurbineFireLoop' MenuName="Christmas Patriarch" }