RuneI
Class SpecialEventRune

source: c:\runehov\RuneI\Classes\SpecialEventRune.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Triggers
         |
         +--Engine.SpecialEvent
            |
            +--RuneI.SpecialEventRune
Direct Known Subclasses:None

class SpecialEventRune
extends Engine.SpecialEvent

//============================================================================= // SpecialEventRune: Receives trigger messages and does some "special event" // depending on the state. //=============================================================================
Variables
 name OtherTag


Function Summary
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================
 void Trigger(Actor Triggerer, Pawn EventInstigator)
     
//=============================================================================
//
// ChangePlayerClass
//
//=============================================================================



Source Code


00001	//=============================================================================
00002	// SpecialEventRune: Receives trigger messages and does some "special event"
00003	// depending on the state.
00004	//=============================================================================
00005	class SpecialEventRune extends SpecialEvent;
00006	
00007	
00008	var() name	OtherTag;
00009	var(SetBeamTarget) int	OtherInt;
00010	
00011	var(Quake) float	QuakeTime;
00012	var(Quake) float	QuakeMagnitude;
00013	var(Quake) float	QuakeRadius;
00014	var(Quake) float	QuakeFalloff;
00015	
00016	var(PushObject) vector PushVector;
00017	
00018	var(RuneMessage) localized string	Msg;
00019	var(RuneMessage) font	MsgFont;
00020	var(RuneMessage) float	MsgLifeTime;
00021	var(RuneMessage) bool	bMsgFade;
00022	var(RuneMessage) float	MsgFadeTime;
00023	var(RuneMessage) vector	MsgLocation;
00024	var(RuneMessage) color	MsgColor;
00025	var(RuneMessage) E_RMAlign MsgAlignment;
00026	
00027	var(Cinematic) bool bAllowSkip;
00028	
00029	var(ChangePlayerClass) string DestURL;
00030	var(ChangePlayerClass) class<RunePlayer> NewPlayerClass;
00031	var(ChangePlayerClass) name DestTeleporterTag;
00032	
00033	
00034	//=============================================================================
00035	//
00036	// SetBeamTarget
00037	//
00038	// Set's beam referenced by ObjectTag to target OtherTag, joint OtherInt
00039	//=============================================================================
00040	state() SetBeamTarget
00041	{
00042		function Trigger( actor Other, pawn EventInstigator )
00043		{
00044			local BeamSystem B;
00045			local Actor A;
00046	
00047			Global.Trigger( Self, EventInstigator );
00048	
00049			if( ObjectTag != '' && OtherTag != '')
00050			{
00051				foreach AllActors(class'actor', A, OtherTag)
00052					break;
00053	
00054				foreach AllActors( class 'BeamSystem', B, ObjectTag )
00055				{
00056					B.Target = A;
00057					B.TargetJointIndex = OtherInt;
00058				}
00059			}
00060		}
00061	}
00062	
00063	//=============================================================================
00064	//
00065	// Quake
00066	//
00067	//=============================================================================
00068	state() Quake
00069	{
00070		function Trigger(actor Other, pawn EventInstigator)
00071		{
00072			local RunePlayer P;
00073	
00074			foreach RadiusActors(class'RunePlayer', P, QuakeRadius, Location)
00075			{
00076				P.ShakeView(QuakeTime, QuakeMagnitude, QuakeFalloff);
00077			}
00078		}
00079	}
00080	
00081	//=============================================================================
00082	//
00083	// StartCinematic
00084	//
00085	//=============================================================================
00086	state() StartCinematic
00087	{
00088		function Trigger(actor Other, pawn EventInstigator)
00089		{
00090			local CineCamera Camera;
00091	
00092			foreach AllActors(class'CineCamera', Camera)
00093			{ // Do not allow the trigger to occur if a CineCamera is already instanced
00094				return;
00095			}
00096	
00097			Camera = Spawn(class'CineCamera', EventInstigator);
00098			Camera.Event = Event;
00099			Camera.StartCam(false, bAllowSkip);
00100		}
00101	}
00102	
00103	//=============================================================================
00104	//
00105	// StartCinematicSmooth
00106	//
00107	//=============================================================================
00108	state() StartCinematicSmooth
00109	{
00110		function Trigger(actor Other, pawn EventInstigator)
00111		{
00112			local CineCamera Camera;
00113	
00114			foreach AllActors(class'CineCamera', Camera)
00115			{ // Do not allow the trigger to occur if a CineCamera is already instanced
00116				return;
00117			}
00118	
00119			Camera = Spawn(class'CineCamera', EventInstigator);
00120			Camera.Event = Event;
00121			Camera.StartCam(true, bAllowSkip);
00122		}
00123	}
00124	
00125	
00126	//=============================================================================
00127	//
00128	// PushObject
00129	//
00130	//=============================================================================
00131	state() PushObject
00132	{
00133		function Trigger(actor Other, pawn EventInstigator)
00134		{
00135			local actor A;
00136			foreach AllActors(class'actor', A, ObjectTag)
00137			{
00138				A.AddVelocity(PushVector);
00139			}
00140		}
00141	}
00142	
00143	
00144	//=============================================================================
00145	//
00146	// ClearOrdersObject
00147	//
00148	//=============================================================================
00149	state() ClearOrdersObject
00150	{
00151		function Trigger( actor Other, pawn EventInstigator )
00152		{
00153			local ScriptPawn P;
00154	
00155			Global.Trigger( Self, EventInstigator );
00156	
00157			if( ObjectTag != '' )
00158			{
00159				foreach AllActors( class 'ScriptPawn', P, ObjectTag )
00160				{
00161					if (P.Health > 0)
00162					{
00163						P.OrderFinished();
00164						P.GotoState('Waiting');
00165					}
00166				}
00167			}
00168		}
00169	}
00170	
00171	
00172	//=============================================================================
00173	//
00174	// RuneMessage
00175	//
00176	//=============================================================================
00177	state() RuneMessage
00178	{
00179		function Trigger( actor Other, pawn EventInstigator )
00180		{
00181			local RuneHUD H;
00182	
00183			Global.Trigger( Self, EventInstigator );
00184	
00185			foreach AllActors( class 'RuneHUD', H )
00186			{
00187				if (MsgLocation==vect(0,0,0))
00188					H.RuneMessage(Msg, Location, MsgColor, MsgFont, MsgLifeTime, bMsgFade, MsgFadeTime, RMALIGN_None);
00189				else
00190					H.RuneMessage(Msg, MsgLocation, MsgColor, MsgFont, MsgLifeTime, bMsgFade, MsgFadeTime, MsgAlignment);
00191				break;
00192			}
00193		}
00194	}
00195	
00196	
00197	//=============================================================================
00198	//
00199	// Subtitle
00200	//
00201	//=============================================================================
00202	state() Subtitle
00203	{
00204		function Trigger( actor Other, pawn EventInstigator )
00205		{
00206			Global.Trigger( Self, EventInstigator );
00207			BroadcastMessage(Msg, false, 'Subtitle');
00208		}
00209	}
00210	
00211	
00212	//=============================================================================
00213	//
00214	// RedSubtitle
00215	//
00216	//=============================================================================
00217	state() RedSubtitle
00218	{
00219		function Trigger( actor Other, pawn EventInstigator )
00220		{
00221			Global.Trigger( Self, EventInstigator );
00222			BroadcastMessage(Msg, false, 'RedSubtitle');
00223		}
00224	}
00225	
00226	
00227	//=============================================================================
00228	//
00229	// UseObject
00230	//
00231	//=============================================================================
00232	state() UseObject
00233	{
00234		function Trigger( actor Other, pawn EventInstigator )
00235		{
00236			local actor A;
00237	
00238			Global.Trigger( Self, EventInstigator );
00239	
00240			foreach AllActors(class'actor', A, ObjectTag)
00241			{
00242				// Don't check proximity to it, since this is a scripted action
00243	//			if (A.CanBeUsed(Other))
00244					A.UseTrigger(EventInstigator);
00245			}
00246		}
00247	}
00248	
00249	
00250	//=============================================================================
00251	//
00252	// ObjectHateOther
00253	//
00254	// OtherTag should match a single victim
00255	//=============================================================================
00256	state() ObjectHateOther
00257	{
00258		function Trigger( actor Triggerer, pawn EventInstigator )
00259		{
00260			local Pawn P, Other;
00261	
00262			Global.Trigger( Self, EventInstigator );
00263	
00264			if( ObjectTag != '' && OtherTag != '')
00265			{
00266				foreach AllActors(class'pawn', Other, OtherTag)
00267					break;
00268	
00269				foreach AllActors(class'pawn', P, ObjectTag)
00270				{
00271					// Must stop scripting in order to set enemy
00272					if (ScriptPawn(P)!=None)
00273						ScriptPawn(P).OrderFinished();
00274					P.Enemy = None;	
00275					P.DamageAttitudeTo(Other);
00276				}
00277			}
00278		}
00279	}
00280	
00281	
00282	//=============================================================================
00283	//
00284	// ChangePlayerClass
00285	//
00286	//=============================================================================
00287	state() ChangePlayerClass
00288	{
00289		function Trigger( actor Triggerer, pawn EventInstigator)
00290		{
00291			local PlayerPawn P, NewPlayer;
00292	
00293			Global.Trigger( Self, EventInstigator);
00294	
00295			if (NewPlayerClass != None)
00296			{
00297				//DestURL = "#" $ DestTeleporterTag $ "?Class=Runei."$NewPlayerClass;
00298	
00299				slog("DestURL=[" $ DestURL $ "]");
00300				foreach AllActors(class'PlayerPawn', P, 'Player')
00301				{
00302					P.ClientTravel( DestURL, TRAVEL_Relative, true );
00303	//				P.ClientTravel( DestURL, TRAVEL_Absolute, true );
00304				}
00305			}
00306		}
00307	}
00308	
00309	defaultproperties
00310	{
00311	     QuakeTime=4.000000
00312	     QuakeMagnitude=500.000000
00313	     QuakeRadius=2000.000000
00314	     QuakeFalloff=2.000000
00315	     PushVector=(X=100.000000,Z=10.000000)
00316	     MsgFont=Font'Engine.RuneBig'
00317	     MsgLifeTime=3.000000
00318	     bMsgFade=True
00319	     MsgFadeTime=1.000000
00320	     MsgColor=(R=255,G=255,B=255,A=128)
00321	     bAllowSkip=True
00322	}

End Source Code