1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFAIController_ZedBloatKingSubspawn.uc
2020-12-13 18:01:13 +03:00

177 lines
8.2 KiB
Ucode

//=============================================================================
// KFAIController_ZedBloatKingSubspawn
//=============================================================================
// Killing Floor 2
// Copyright (C) 2017 Tripwire Interactive LLC
//=============================================================================
// Base controller for the BK poop monster. Streaks toward a target and
// explodes its matter all over.
//=============================================================================
class KFAIController_ZedBloatKingSubspawn extends KFAIController_Monster;
/** Squared radius at which the poop monster will attempt to explode */
var const float ExplosionRadiusSq;
/** Cached pawn reference */
var KFPawn_ZedBloatKingSubspawn PoopPawn;
event Possess(Pawn inPawn, bool bVehicleTransition)
{
super.Possess(inPawn, bVehicleTransition);
PoopPawn = KFPawn_ZedBloatKingSubspawn(inPawn);
}
simulated function Tick(float DeltaTime)
{
super.Tick(DeltaTime);
if (Role == ROLE_Authority)
{
CheckMeleeTargetExplosion();
}
}
//This guy never melees, skip this functionality
function bool CanDoStrike()
{
return false;
}
function CheckMeleeTargetExplosion()
{
local Vector ToTarget;
if (Enemy == none || PoopPawn.IsDoingSpecialMove(SM_Custom1))
{
return;
}
ToTarget = Enemy.Location - MyKFPawn.Location;
if (VSizeSq(ToTarget) < ExplosionRadiusSq)
{
if (PoopPawn != none)
{
class'AICommand_BloatKingSubspawn_Explode'.static.StartExplode(self);
}
}
}
defaultproperties
{
ExplosionRadiusSq=62500 //300uu=3m squared for performance
// ---------------------------------------------
// Combat
MeleeCommandClass=class'AICommand_Base_Zed'
DefaultCommandClass=class'AICommand_Base_Zed'
bIsProbingMeleeRangeEvents=true
// ---------------------------------------------
// AI / Navigation
SprintWithinEnemyRange=(X=600.f,Y=1200.f)
bEvadeOnRunOverWarning=true
// ---------------------------------------------
// Danger Evasion Settings
DangerEvadeSettings.Empty
DangerEvadeSettings(0)={(ClassName="KFProj_Bullet_Pellet",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.6, 0.5, 0.3, 0.2),
ReactionDelayRanges={((X=0.0, Y=0.2), (X=0.0, Y=0.0), (X=0.0, Y=0.15), (X=0.0, Y=0.00))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(1)={(ClassName="KFProj_Nail_Nailgun",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.6, 0.5, 0.3, 0.2),
ReactionDelayRanges={((X=0.0, Y=0.2), (X=0.0, Y=0.0), (X=0.0, Y=0.15), (X=0.0, Y=0.00))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(2)={(ClassName="KFProj_Bullet_DragonsBreath",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.6, 0.5, 0.3, 0.2),
ReactionDelayRanges={((X=0.0, Y=0.2), (X=0.0, Y=0.0), (X=0.0, Y=0.15), (X=0.0, Y=0.00))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(3)={(ClassName="KFProj_HighExplosive_M79",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.6, 0.5, 0.3, 0.2),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.2), (X=0.0, Y=0.0), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(4)={(ClassName="KFProj_HighExplosive_M32",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.6, 0.5, 0.3, 0.2),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.2), (X=0.0, Y=0.0), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(5)={(ClassName="KFProj_Rocket_RPG7",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.6, 0.5, 0.3, 0.2),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.2), (X=0.0, Y=0.0), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
//shooting fire
DangerEvadeSettings(6)={(ClassName="KFProj_CaulkNBurn_GroundFire",
Cooldowns=(3.0, 1.0, 1.0, 1.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.2, 0.3, 0.4),
ReactionDelayRanges={((X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(7)={(ClassName="KFProj_FlameThrower_GroundFire",
Cooldowns=(3.0, 1.0, 1.0, 1.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.2, 0.3, 0.4),
ReactionDelayRanges={((X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(8)={(ClassName="KFWeap_Flame_CaulkBurn",
Cooldowns=(2.5, 2.5, 2.5, 2.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.2, 0.3, 0.4),
ReactionDelayRanges={((X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(9)={(ClassName="KFWeap_Flame_Flamethrower",
Cooldowns=(2.5, 2.5, 2.5, 2.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.2, 0.3, 0.4),
ReactionDelayRanges={((X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(10)={(ClassName="KFWeap_Beam_Microwave",
Cooldowns=(2.5, 2.5, 2.5, 2.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.2, 0.3, 0.4),
ReactionDelayRanges={((X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5))},
SoloChanceMultiplier=1.0)}
//Grenades
DangerEvadeSettings(11)={(ClassName="KFProj_FragGrenade",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.4, 0.6, 0.8),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.5), (X=0.0, Y=0.3), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(12)={(ClassName="KFProj_MolotovGrenade",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.4, 0.6, 0.8),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.5), (X=0.0, Y=0.3), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(13)={(ClassName="KFProj_DynamiteGrenade",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.4, 0.6, 0.8),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.5), (X=0.0, Y=0.3), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(14)={(ClassName="KFProj_NailBombGrenade",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.4, 0.6, 0.8),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.5), (X=0.0, Y=0.3), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
DangerEvadeSettings(15)={(ClassName="KFProj_HEGrenade",
Cooldowns=(3.0, 1.0, 0.1, 0.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.4, 0.6, 0.8),
ForcedEvadeChances={((FL=0.0, FR=0.0), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5), (FL=0.5, FR=0.5))},
ReactionDelayRanges={((X=0.0, Y=0.5), (X=0.0, Y=0.3), (X=0.0, Y=0.15), (X=0.0, Y=0.05))},
SoloChanceMultiplier=1.0)}
// Ground Fire
DangerEvadeSettings(16)={(ClassName="KFProj_Flame_HRGIncendiaryRifle",
Cooldowns=(3.0, 1.0, 1.0, 1.0), // Normal, Hard, Suicidal, HoE
EvadeChances=(0.2, 0.2, 0.3, 0.4),
ReactionDelayRanges={((X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5), (X=0.3, Y=0.5))},
SoloChanceMultiplier=1.0)}
}