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

82 lines
2.1 KiB
Ucode

/*
--------------------------------------------------------------
ACTION_ChangeViewTarget
--------------------------------------------------------------
Scripted Action used to switch players viewtarget to a specific actor.
Used in story mode for the Patriarch 'Grand Entrance' sequence.
Author : Alex Quick
--------------------------------------------------------------
*/
class ACTION_ChangeViewTarget extends ScriptedAction;
var() name ViewActorTag;
var bool bViewingActor;
/* Initialises this action ** NOTE : returning TRUE out of this function will pause
all subsequent actions. you must return false if you want the scripted actions to proceed*/
function bool InitActionFor(ScriptedController C)
{
local Controller CC;
local PlayerController PC;
local Actor TestActor, ViewActor;
if(ViewActorTag != '')
{
foreach AllObjects(class 'Actor', TestActor)
{
if(TestActor.Tag == ViewActorTag)
{
ViewActor = TestActor;
break;
}
}
}
bViewingActor = ViewActor != none ;
for ( CC = C.Level.ControllerList; CC != None; CC = CC.NextController )
{
PC = PlayerController(CC);
if( PC !=None )
{
if(ViewActorTag != '')
{
log("! Change View Target to : "@ViewActor,'Story_Debug');
ViewActor.bAlwaysRelevant = True;
PC.SetViewTarget(ViewActor);
PC.ClientSetViewTarget(ViewActor);
PC.bBehindView = True;
PC.ClientSetBehindView(True);
if(KFMonster(ViewActor) != none)
{
KFMonster(ViewActor).MakeGrandEntry();
}
}
else
{
log("! Change View Target to : "@PC.Pawn,'Story_Debug');
if( PC.Pawn!=None )
{
PC.SetViewTarget(PC.Pawn);
PC.ClientSetViewTarget(PC.Pawn);
}
else
{
PC.SetViewTarget(PC);
PC.ClientSetViewTarget(PC);
}
PC.bBehindView = False;
PC.ClientSetBehindView(False);
}
}
}
return false;
}