/* -------------------------------------------------------------- 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; }