89 lines
2.4 KiB
Ucode
89 lines
2.4 KiB
Ucode
|
//=============================================================================
|
||
|
// KFSeqAct_SetTraderVolumeIgnore
|
||
|
//=============================================================================
|
||
|
// Action that sets a volume to be used when determining if the trader trail
|
||
|
// is shown or not.
|
||
|
//=============================================================================
|
||
|
// Killing Floor 2
|
||
|
// Copyright (C) 2017 Tripwire Interactive LLC
|
||
|
//=============================================================================
|
||
|
class KFSeqAct_SetTraderVolumeIgnore extends SequenceAction
|
||
|
dependsOn(KFSeqAct_ShowPath);
|
||
|
|
||
|
/**
|
||
|
* Leave at VCT_None to always attempt to show the path to all human players.
|
||
|
* If this is set to VCT_InVolume, it will only show the path to players inside the linked volume.
|
||
|
* If this is set to VCT_NotInVolume, it will only show the path to players NOT in the linked volume.
|
||
|
*/
|
||
|
var() eVolumeCheckType VolumeCheckType;
|
||
|
|
||
|
event Activated()
|
||
|
{
|
||
|
local SeqVar_Object ObjVar;
|
||
|
local Volume Volume;
|
||
|
local KFGameReplicationInfo KFGRI;
|
||
|
|
||
|
if( InputLinks[0].bHasImpulse )
|
||
|
{
|
||
|
// Grab our trader
|
||
|
foreach LinkedVariables( class'SeqVar_Object', ObjVar, "Volume" )
|
||
|
{
|
||
|
Volume = Volume( ObjVar.GetObjectValue() );
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
// Sanity
|
||
|
if( Volume == none )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Set in gamereplicationinfo
|
||
|
KFGRI = KFGameReplicationInfo( class'WorldInfo'.static.GetWorldInfo().GRI );
|
||
|
if( KFGRI != none )
|
||
|
{
|
||
|
KFGRI.TraderVolume = Volume;
|
||
|
KFGRI.TraderVolumeCheckType = VolumeCheckType;
|
||
|
}
|
||
|
}
|
||
|
else if( InputLinks[1].bHasImpulse )
|
||
|
{
|
||
|
// Clear from gamereplicationinfo
|
||
|
KFGRI = KFGameReplicationInfo( class'WorldInfo'.static.GetWorldInfo().GRI );
|
||
|
if( KFGRI != none )
|
||
|
{
|
||
|
KFGRI.TraderVolume = none;
|
||
|
KFGRI.TraderVolumeCheckType = 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function bool IsActorInVolume( Actor TestActor, Volume TestVolume )
|
||
|
{
|
||
|
local Actor A;
|
||
|
|
||
|
// Use actor base class to avoid casting
|
||
|
foreach TestActor.TouchingActors( class'Actor', A )
|
||
|
{
|
||
|
if( A == TestVolume )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return TestVolume.Encompasses( TestActor );
|
||
|
}
|
||
|
|
||
|
DefaultProperties
|
||
|
{
|
||
|
ObjCategory="Killing Floor"
|
||
|
ObjName="Set Trader Volume Settings"
|
||
|
|
||
|
InputLinks(0)=(LinkDesc="Set")
|
||
|
InputLinks(1)=(LinkDesc="Clear")
|
||
|
VariableLinks.Empty()
|
||
|
VariableLinks(0)=(ExpectedType=class'SeqVar_Object',LinkDesc="Volume",MaxVars=1)
|
||
|
|
||
|
VolumeCheckType=VCT_None
|
||
|
bCallHandler=false
|
||
|
}
|