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

106 lines
2.1 KiB
Ucode

/*
--------------------------------------------------------------
KFUseTrigger_Story
--------------------------------------------------------------
Custom Use Trigger that can trigger additional events.
Author : Alex Quick
--------------------------------------------------------------
*/
class KFUseTrigger_Story extends KFUseTrigger;
/* event to fire off when the doors associated with this trigger have been fully welded shut */
var(Events) name FullWeldEvent;
/* if true, this trigger starts life dormant. it can only be 'used' once it has been triggered */
var() bool bTriggerEnabled;
var() bool bEnabled;
var() bool bAllowZEDInteraction;
var() bool bShouldBeEnabledInWaveMode;
function PostBeginPlay()
{
Super.PostBeginPlay();
if(KFStoryGameinfo(Level.Game) == none)
{
bEnabled = bShouldBeEnabledInWaveMode;
}
}
function bool TriggerIsUseable()
{
return bEnabled && bCollideActors;
}
function AddWeld( float ExtraWeld, bool bZombieAttacking, Pawn WelderInst )
{
if(!TriggerIsUseable() && WelderInst != none)
{
return;
}
Super.AddWeld(ExtraWeld,bZombieAttacking,WelderInst);
if(WeldStrength >= MaxWeldStrength)
{
TriggerEvent(FullWeldEvent,self,none);
}
}
function UnWeld(float DeWeldage,bool bZombieAttacking, Pawn WelderInst)
{
if(!TriggerIsUseable() && WelderInst != none)
{
return;
}
Super.UnWeld(DeWeldage,bZombieAttacking,WelderInst);
}
function UsedBy(Pawn user)
{
if(!TriggerIsUseable())
{
return;
}
Super.UsedBy(user);
}
function Touch( Actor Other )
{
if(bEnabled && (!Other.IsA('KFMonster') || bAllowZEDInteraction))
{
Super.Touch(Other);
}
}
function Reset()
{
Super.Reset();
bEnabled = !bTriggerEnabled ;
}
function Trigger( actor Other, pawn EventInstigator )
{
if(bTriggerEnabled)
{
bEnabled = !bEnabled;
}
Super.Trigger(other,EventInstigator);
}
defaultproperties
{
bShouldBeEnabledInWaveMode = true
bEnabled = true
}