53 lines
1.2 KiB
Ucode
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
|
|
}
|