68 lines
1.6 KiB
Ucode
68 lines
1.6 KiB
Ucode
//=============================================================================
|
|
// KF Use Trigger. Now with bigger messages, and Refire delays for human users.
|
|
//
|
|
// By: Alex
|
|
// Major fixes by Marco (16.1.2009).
|
|
//=============================================================================
|
|
class KFElevatorTrigger extends KFUseTrigger;
|
|
|
|
var() float ReUseDelay;
|
|
var transient float NextAttemptTime;
|
|
var() Sound ActivateSound; // Beep Beep TOOT TOOT! wizzzzPOW!
|
|
var KFElevator MyElevator;
|
|
var byte MyFloorNum; // 255 - Elevator itself.
|
|
|
|
function bool SelfTriggered()
|
|
{
|
|
return true;
|
|
}
|
|
function NotifyElevatorStarted( float MoveTimer )
|
|
{
|
|
NextAttemptTime = Level.TimeSeconds+MoveTimer+ReUseDelay;
|
|
SetTimer(MoveTimer+ReUseDelay+1,false);
|
|
}
|
|
function UsedBy( Pawn user )
|
|
{
|
|
local byte k;
|
|
|
|
if( Level.TimeSeconds>NextAttemptTime )
|
|
{
|
|
if( MyFloorNum==255 )
|
|
{
|
|
if( AIController(user.Controller)!=None )
|
|
k = MyElevator.GetAIDesiredFloor(user);
|
|
else k = 255;
|
|
if( k==255 )
|
|
{
|
|
if( MyElevator.KeyNum>=MyElevator.NumberOfFloors )
|
|
k = 0;
|
|
else k = MyElevator.KeyNum+1;
|
|
}
|
|
}
|
|
else k = MyFloorNum;
|
|
NextAttemptTime = Level.TimeSeconds+0.5+MyElevator.DelayTime;
|
|
MyElevator.GoToFloor(k,Self,user);
|
|
PlaySound(ActivateSound,SLOT_None, 255, false,200,,true);
|
|
}
|
|
}
|
|
function Reset()
|
|
{
|
|
NextAttemptTime = -1;
|
|
}
|
|
function Timer()
|
|
{
|
|
local Pawn P;
|
|
|
|
foreach TouchingActors(Class'Pawn',P)
|
|
Touch(P);
|
|
}
|
|
function Touch( Actor Other )
|
|
{
|
|
Super(UseTrigger).Touch(Other);
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
ReUseDelay=2
|
|
}
|