Áƒ*žE?@¨(X‘xŔ-ö/EşĘÚS“e'?None NewTrigger IsRelevant IsOnTeam TeamGamePlusTouch MoveKeyframedesolateTriggerCoreEnginePostBeginPlay TakeDamageSystemBotpackTimer DesolateTriggerObject FunctionPackageClassEventVectorPawnActorLevel GameInfo LevelInfo ReturnValueZStructUnrealICollisionRadiusCollisionHeightStructProperty DamageTypeTeam LocationbInitiallyActive MoveTimeOtherP Momentum HitLocationDamagebTriggerOnceOnlyGame Instigator nextPawn PawnList instigatedBy NamePropertyElevatorMoverEM GotoKeyframeObjectPropertyFloatProperty BoolProperty TeamTriggerbTimed IntProperty ByteProperty TextBuffer‡ €‡€ƒ‘€†˙˙˙˙˙˙˙˙a@˙˙˙˙˙˙˙˙˙˙2Ţ ô’†kúy…Ž”œŠŮŤ…Ž”}"›#…Ž”œŠŮŤƒœÔX…Ž”}"›#ƒœÔX…Ž”‡žtȇžtȇžtȇžtȇžtČ‘Yű ˆ  €Œ €Œ€€ƒ¤/šŞ‰ŚŸw*ˆ‚°şŻ6”6” Ž™™°á؏ ˘Ąa @' § \ZM˙!/a0 ‘L  10Z-a( ›8Ęˆz„„„- ‰Ža/!r˜*2.‰Ž˜:(› š Azx‚‚w*‰Ža/!+.‰Ž:š  ˛h//============================================================================= // NewTrigger. //============================================================================= class NewTrigger expands TeamTrigger; // A special trigger devised for the ElevatorMover class, since // detecting one trigger message is not enough to determine 2 or more // different commands (like up/down). When an actor is within its' // radius, it sends a message to the ElevatorMover with the desired // keyframe change and moving time interval. var() int GotoKeyframe; var() float MoveTime; var() bool bTriggerOnceOnly; var() byte Team; var() bool bTimed; // // Called when something touches the trigger. // function Touch( actor Other ) { local ElevatorMover EM; if( IsRelevant( Other ) ) { // Call the ElevatorMover's Move function if( Event != '' ) foreach AllActors( class 'ElevatorMover', EM, Event ) EM.MoveKeyframe( GotoKeyFrame, MoveTime ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); } } function PostBeginPlay() { Super.PostBeginPlay(); if ( bTimed ) SetTimer(2.5, true); } function Timer() { local Pawn P; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( (abs(Location.Z - P.Location.Z) < CollisionHeight + P.CollisionHeight) && (VSize(Location - P.Location) < CollisionRadius) ) Touch(P); SetTimer(2.5, true); } function bool IsRelevant( actor Other ) { if( !bInitiallyActive || !Level.Game.IsA('TeamGamePlus') || (Other.Instigator == None) || TeamGamePlus(Level.Game).IsOnTeam(Other.Instigator, Team) ) return false; return Super.IsRelevant(Other); } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, name damageType) { if ( (InstigatedBy != None) && Level.Game.IsA('TeamGamePlus') && !TeamGamePlus(Level.Game).IsOnTeam(InstigatedBy, Team) ) Super.TakeDamage(Damage, instigatedBy, HitLocation, Momentum, DamageType); } Ÿ 'OŸ-a @' €ˇv//============================================================================= // DesolateTrigger. //============================================================================= class DesolateTrigger expands TeamTrigger; // A special trigger devised for the ElevatorMover class, since // detecting one trigger message is not enough to determine 2 or more // different commands (like up/down). When an actor is within its' // radius, it sends a message to the ElevatorMover with the desired // keyframe change and moving time interval. var() int GotoKeyframe; var() float MoveTime; var() bool bTriggerOnceOnly; var() byte Team; var() bool bTimed; // // Called when something touches the trigger. // function Touch( actor Other ) { local ElevatorMover EM; if( IsRelevant( Other ) ) { // Call the ElevatorMover's Move function if( Event != '' ) foreach AllActors( class 'ElevatorMover', EM, Event ) EM.MoveKeyframe( GotoKeyFrame, MoveTime ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); } } function PostBeginPlay() { Super.PostBeginPlay(); if ( bTimed ) SetTimer(2.5, true); } function Timer() { local Pawn P; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( (abs(Location.Z - P.Location.Z) < CollisionHeight + P.CollisionHeight) && (VSize(Location - P.Location) < CollisionRadius) ) Touch(P); SetTimer(2.5, true); } function bool IsRelevant( actor Other ) { if( !bInitiallyActive || !Level.Game.IsA('TeamGamePlus') || (Other.Instigator == None) || TeamGamePlus(Level.Game).IsOnTeam(Other.Instigator, Team) ) return false; return Super.IsRelevant(Other); } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, name damageType) { if ( (InstigatedBy != None) && Level.Game.IsA('TeamGamePlus') && !TeamGamePlus(Level.Game).IsOnTeam(InstigatedBy, Team) ) Super.TakeDamage(Damage, instigatedBy, HitLocation, Momentum, DamageType); } ˆ ˙˙˙˙ ˙˙˙˙ü˙˙˙:˙˙˙˙ţ˙˙˙7ý˙˙˙ţ˙˙˙ţ˙˙˙7ř˙˙˙ü˙˙˙7ű˙˙˙."ý˙˙˙%đ˙˙˙4ţ˙˙˙9ţ˙˙˙8ô˙˙˙ţ˙˙˙"˙˙˙˙ţ˙˙˙>7ý˙˙˙/8ý˙˙˙!ú˙˙˙ ú˙˙˙˙˙˙˙3ý˙˙˙ţ˙˙˙<ú˙˙˙ 9ę˙˙˙&7ů˙˙˙08ý˙˙˙ ţ˙˙˙3ú˙˙˙ţ˙˙˙=7ű˙˙˙1ę˙˙˙ţ˙˙˙8‹) X‹2 e‹( rĽ$ ‹5 L’; Yž, e†$oqž6 `•+ l•* yŁ# F¨' R‹( ^’- kŠ¤DwŠ§Q{Š›tLŠš c@—4scŠŸ -V<’ C=—4A O=$@P]