rott/kf_sources/KFChar/Classes/ZombieBoss_XMas.uc
2026-07-14 20:27:09 +07:00

187 lines
5.2 KiB
Ucode

//-----------------------------------------------------------
//
//-----------------------------------------------------------
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"
}