263 lines
8.4 KiB
Ucode
263 lines
8.4 KiB
Ucode
//=============================================================================
|
|
// KFPawn_ZedBloatKingSubspawn
|
|
//=============================================================================
|
|
// It's a poop. Monster.
|
|
//=============================================================================
|
|
// Killing Floor 2
|
|
// Copyright (C) 2017 Tripwire Interactive LLC
|
|
//=============================================================================
|
|
|
|
class KFPawn_ZedBloatKingSubspawn extends KFPawn_Monster;
|
|
|
|
var KFGameExplosion DeathExplosionTemplate;
|
|
var bool bPlayedExplosion;
|
|
var bool bDelayedExplosion;
|
|
|
|
simulated event bool CanDoSpecialMove(ESpecialMove AMove, optional bool bForceCheck)
|
|
{
|
|
if (AMove == SM_Custom1)
|
|
{
|
|
return !IsDoingSpecialMove(SM_Custom1);
|
|
}
|
|
|
|
return super.CanDoSpecialmove(AMove, bForceCheck);
|
|
}
|
|
|
|
function bool Died(Controller Killer, class<DamageType> DamageType, vector HitLocation)
|
|
{
|
|
if (!bPlayedExplosion)
|
|
{
|
|
Explode();
|
|
}
|
|
|
|
return super.Died(Killer, DamageType, HitLocation);
|
|
}
|
|
|
|
simulated event Tick(float DeltaTime)
|
|
{
|
|
super.Tick(DeltaTime);
|
|
|
|
if (bDelayedExplosion && !bPlayedExplosion)
|
|
{
|
|
Explode();
|
|
}
|
|
}
|
|
|
|
function DelayExplode()
|
|
{
|
|
bDelayedExplosion = true;
|
|
}
|
|
|
|
simulated function PlayDying(class<DamageType> DamageType, vector HitLoc)
|
|
{
|
|
local KFExplosionActor ExploActor;
|
|
|
|
super.PlayDying(DamageType, HitLoc);
|
|
|
|
if (!bPlayedExplosion)
|
|
{
|
|
bPlayedExplosion = true;
|
|
|
|
//Visual explosion + lingering dot damage
|
|
ExploActor = Spawn(class'KFExplosion_BloatKingSubspawn', self, , Location, rotator(vect(0, 0, 1)));
|
|
if (ExploActor != none)
|
|
{
|
|
ExploActor.InstigatorController = Controller;
|
|
ExploActor.Instigator = self;
|
|
ExploActor.Explode(DeathExplosionTemplate);
|
|
}
|
|
|
|
//Hide mesh behind the FX
|
|
Mesh.SetHidden(true);
|
|
}
|
|
}
|
|
|
|
simulated function Explode()
|
|
{
|
|
if (Role == ROLE_Authority && IsAliveAndWell())
|
|
{
|
|
KilledBy(self);
|
|
}
|
|
}
|
|
|
|
function CauseHeadTrauma(float BleedOutTime = 5.f)
|
|
{
|
|
if (IsAliveAndWell())
|
|
{
|
|
return;
|
|
}
|
|
|
|
super.CauseHeadTrauma(BleedOutTime);
|
|
}
|
|
|
|
simulated function PlayHeadAsplode()
|
|
{
|
|
if (IsAliveAndWell())
|
|
{
|
|
return;
|
|
}
|
|
|
|
super.PlayHeadAsplode();
|
|
}
|
|
|
|
simulated function ApplyHeadChunkGore(class<KFDamageType> DmgType, vector HitLocation, vector HitDirection)
|
|
{
|
|
if (IsAliveAndWell())
|
|
{
|
|
return;
|
|
}
|
|
|
|
super.ApplyHeadChunkGore(DmgType, HitLocation, HitDirection);
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
LocalizationKey=KFPawn_ZedBloatKingSubspawn
|
|
|
|
// Used for special crawler gas AOE attack "explosion" template
|
|
Begin Object Class=KFGameExplosion Name=ExploTemplate0
|
|
Damage=12 //15 //50 //12 //16
|
|
DamageRadius=350 //600 //450 //400 //425
|
|
DamageFalloffExponent=0.f
|
|
DamageDelay=0.f
|
|
MyDamageType=class'KFDT_Toxic_BloatKingSubspawnExplosion'
|
|
|
|
// Damage Effects
|
|
KnockDownStrength=0
|
|
KnockDownRadius=0
|
|
FractureMeshRadius=0
|
|
FracturePartVel=0
|
|
ExplosionEffects=KFImpactEffectInfo'CHR_Bile_ARCH.FX_Bile_Explosion_01'
|
|
ExplosionSound=AkEvent'WW_ZED_Abomination.Play_Bile_Explode'
|
|
MomentumTransferScale=100
|
|
|
|
// Dynamic Light
|
|
ExploLight=none
|
|
|
|
// Camera Shake
|
|
CamShake=CameraShake'FX_CameraShake_Arch.Grenades.Default_Grenade'
|
|
CamShakeInnerRadius=250 //450
|
|
CamShakeOuterRadius=525 //900
|
|
CamShakeFalloff=1.f
|
|
bOrientCameraShakeTowardsEpicenter=true
|
|
End Object
|
|
DeathExplosionTemplate=ExploTemplate0
|
|
|
|
// Third person body component
|
|
Begin Object Name=KFPawnSkeletalMeshComponent
|
|
Translation=(Z=-40)
|
|
bPerBoneMotionBlur=false
|
|
End Object
|
|
|
|
Begin Object Name=CollisionCylinder
|
|
CollisionHeight=40.0
|
|
CollisionRadius=+47.0
|
|
End Object
|
|
|
|
// ---------------------------------------------
|
|
// Stats
|
|
XPValues(0)=8
|
|
XPValues(1)=10
|
|
XPValues(2)=10
|
|
XPValues(3)=10
|
|
|
|
// ---------------------------------------------
|
|
// Content
|
|
MonsterArchPath="ZED_ARCH.ZED_KingBloatSubspawn_Archetype"
|
|
PawnAnimInfo=KFPawnAnimInfo'ZED_Crawler_ANIM.Crawler_AnimGroup'
|
|
DifficultySettings=class'KFDifficulty_BloatKingSubspawn'
|
|
|
|
|
|
//'CHR_Bile_ANIM.Bile_AnimGroup'
|
|
//'ZED_Crawler_ANIM.Crawler_AnimGroup'
|
|
// ---------------------------------------------
|
|
// Gameplay
|
|
Begin Object Name=MeleeHelper_0
|
|
BaseDamage=10.f //7
|
|
MaxHitRange=190.f //180
|
|
MomentumTransfer=25000.f
|
|
MyDamageType=class'KFDT_Slashing_ZedWeak'
|
|
End Object
|
|
|
|
Health=150 //250 //55 //450 //700 //900 //810
|
|
DoshValue=10
|
|
Mass=50.f
|
|
bKnockdownWhenJumpedOn=true
|
|
|
|
// Penetration
|
|
PenetrationResistance=0.1
|
|
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic_Submachinegun', DamageScale=(1.0))) //2.25
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic_AssaultRifle', DamageScale=(1.0)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic_Shotgun', DamageScale=(1.0))) //0.75 //0.8
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic_Handgun', DamageScale=(1.0)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic_Rifle', DamageScale=(1.0))) //0.45
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Slashing', DamageScale=(1.0)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Bludgeon', DamageScale=(0.9)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Fire', DamageScale=(0.9))) //0.6
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Microwave', DamageScale=(0.2)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Explosive', DamageScale=(1.0)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Piercing', DamageScale=(1.0)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Toxic', DamageScale=(0.0))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Toxic_BloatKingFart', DamageScale=(0.00))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Toxic_BloatPukeMine', DamageScale=(0.00)))
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Toxic_BloatKingPukeMine', DamageScale=(0.00)))
|
|
|
|
//Special cases
|
|
DamageTypeModifiers.Add((DamageType=class'KFDT_Bleeding_HRG_Vampire_BloodSuck', DamageScale=(2.0)))
|
|
|
|
|
|
|
|
|
|
// ---------------------------------------------
|
|
// Movement / Physics
|
|
ReachedGoalThresh_Walking=0.f
|
|
RotationRate=(Pitch=90000,Yaw=45000,Roll=90000)
|
|
GroundSpeed=450.f
|
|
SprintSpeed=550.f //500
|
|
MaxFallSpeed=6000
|
|
JumpZ=750
|
|
bUseQuadrupedFloorConform=true
|
|
|
|
// ---------------------------------------------
|
|
// AI / Navigation
|
|
ControllerClass=class'KFAIController_ZedBloatKingSubspawn'
|
|
bDisableTurnInPlace=true
|
|
bBlocksNavigation=true
|
|
DamageRecoveryTimeHeavy=0.75f
|
|
DamageRecoveryTimeMedium=1.0f
|
|
|
|
KnockdownImpulseScale=1.0f
|
|
|
|
// ---------------------------------------------
|
|
// Special Moves
|
|
Begin Object Name=SpecialMoveHandler_0
|
|
SpecialMoveClasses(SM_Custom1)=class'KFSM_BloatKingSubspawn_Explode'
|
|
SpecialMoveClasses(SM_Evade)=class'KFSM_Evade'
|
|
SpecialMoveClasses(SM_Evade_Fear)=class'KFSM_Evade_Fear'
|
|
End Object
|
|
|
|
// for reference: Vulnerability=(default, head, legs, arms, special)
|
|
IncapSettings(AF_Stun)= (Vulnerability=(2.0), Cooldown=5.0, Duration=2.5)
|
|
IncapSettings(AF_Knockdown)=(Vulnerability=(3.f), Cooldown=0.0) // 2 cool1
|
|
IncapSettings(AF_Stumble)= (Vulnerability=(2.f), Cooldown=0.2)
|
|
IncapSettings(AF_GunHit)= (Vulnerability=(2.5), Cooldown=0.2)
|
|
IncapSettings(AF_MeleeHit)= (Vulnerability=(2.0), Cooldown=0.0)
|
|
IncapSettings(AF_Poison)= (Vulnerability=(0.0), Cooldown=7.5, Duration=5.5)
|
|
IncapSettings(AF_Microwave)=(Vulnerability=(0.5), Cooldown=7.5, Duration=3.0)
|
|
IncapSettings(AF_FirePanic)=(Vulnerability=(3), Cooldown=7.0, Duration=5)
|
|
IncapSettings(AF_EMP)= (Vulnerability=(2.5), Cooldown=5.0, Duration=5.0)
|
|
IncapSettings(AF_Freeze)= (Vulnerability=(2.5), Cooldown=1.5, Duration=4.5)
|
|
IncapSettings(AF_Snare)= (Vulnerability=(10.0), Cooldown=5.5, Duration=4.0)
|
|
IncapSettings(AF_Bleed)= (Vulnerability=(2.0))
|
|
|
|
ParryResistance=1
|
|
|
|
`if(`notdefined(ShippingPC))
|
|
DebugRadarTexture=Texture2D'UI_ZEDRadar_TEX.MapIcon_Crawler'; //@TODO: Replace me
|
|
`endif
|
|
|
|
// ---------------------------------------------
|
|
// Spawning
|
|
MinSpawnSquadSizeType=EST_Crawler
|
|
}
|