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

53 lines
1.2 KiB
Ucode

class BruteAvoidArea extends AvoidMarker;
var KFMonster KFMonst; // Should be the same as base and owner
state BigMeanAndScary
{
Begin:
StartleBots();
Sleep(1.0);
GoTo('Begin');
}
function InitFor(KFMonster V)
{
if (V != None)
{
KFMonst = V;
SetCollisionSize(KFMonst.CollisionRadius * 3, KFMonst.CollisionHeight + CollisionHeight);
SetBase(KFMonst);
GoToState('BigMeanAndScary');
}
}
function Touch( actor Other )
{
if ( (Pawn(Other) != None) && RelevantTo(Pawn(Other)) )
KFMonsterController(Pawn(Other).Controller).AvoidThisMonster(KFMonst);
}
function bool RelevantTo(Pawn P)
{
return ( KFMonst != none && VSizeSquared(KFMonst.Velocity) >= 75 && Super.RelevantTo(P)
&& KFMonst.Velocity dot (P.Location - KFMonst.Location) > 0 );
}
function StartleBots()
{
local KFMonster P;
if (KFMonst != None)
ForEach CollidingActors(class'KFMonster', P, CollisionRadius)
if (RelevantTo(P))
KFMonsterController(P.Controller).AvoidThisMonster(KFMonst);
}
defaultproperties
{
CollisionRadius=1000.000000
bBlockZeroExtentTraces=False
bBlockNonZeroExtentTraces=False
bBlockHitPointTraces=False
}