177 lines
8.2 KiB
Ucode
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)}
|
||
|
}
|