*&_U1*K+ S}F7BBBBBBBHHHH H H H H HHHHHHHHHHHHHHJJJ J!J"J#Z-None GameplayCoreSystemEngine ReflectionsRoomHFReverb DecayTime DecayHFRatio ReverbDelayReflectionsDelayEnvironmentSize DecayLFRatioRoomLFEnvironmentDiffusion HFReference LFReferenceAction EchoDepth MessagesObjectRoom EchoTimeInitActionFor ActionStringAirAbsorptionHFGetActionStringTickTriggerbValidForTriggerGetInstigatorForceKarma Lighting LightColor Collision MovementGetMoveTargetFor EndEvent ViewShakerTimerCompleteAction GetMyPlayerMessageTextureClientPressureVolumeProceedToNextActionModulationDepth BeginEventVectorPostBeginPlay SetActionsModulationTime ScriptingColorClearAnimationCounterLeaveScriptingGetMoveTargetMayShootTargetCameraTextureClientBegin TriggerLightBrokenbLocationalHit TurnToGoal MoveToGoal ShouldCrouchPawnPlayBaseAnim bDirectional TickedActionTriggeredConditionCompleteWhenTriggered DeathStringStartsSectionReplace GetScript SetNewScriptProceedToSectionEnd GetItemNameInitForNextActionCheckIfNearPlayer SpectatorCam GetDistancebStatic DestroyPawnSetEnemyReaction TeamTriggerCompleteOnAnim DamageTypeTextureClientMessageCompleteWhenTimer StillTickingWeaponFireAgainSetCurrentAnimationFor ValidActionWaitForPlayer SetWalking EndsSection DisplayDebugFemaleSuicide TriggerEvent MaleSuicide MakeNormalCollisionRadius FlashFogGetPawnDamageEffect StopFiring bArmorStops UnPossessClientSetMusic TakeDamage BeginPlayDoJumpDodge DoDoubleJumpDied StopFire ServerTravelSetMoveTargetRenderTextureAction_KILLINSTIGATOR GetString FontSize SetFOVAngle LightEffect DrawColor StartFireNone IsOnTeamAnimEnd TakeOverTakeControlOf bNavigateTouchGetSoundSource bNoDelete ClearScript SetFireYaw AbortScript FearSpot UnTriggerRedirectionTriggerMayShootAtEnemy KeepMovingInitializeFor RemoteRoleCollisionHeightSetMovementPhysics SoundVolume SoundPitchScriptedController SoundRadius bClientAnim ScaledSprite bMovable AnimRatebCollideWhenPlacingScriptedSequence MessageClassConsoleCommandRockingSkyZoneInfoScriptedTriggerScriptedTriggerController FadeTimebAlwaysRelevantEFFECT_WOODEN_SMALLROOMEFFECT_WOODEN_SHORTPASSAGE FadeOutTimeEFFECT_WOODEN_MEDIUMROOMEFFECT_WOODEN_LONGPASSAGEEFFECT_WOODEN_LARGEROOMDamageEFFECT_WOODEN_HALLEFFECT_WOODEN_CUPBOARDEFFECT_WOODEN_COURTYARDEFFECT_WOODEN_ALCOVEEFFECT_UnderwaterEFFECT_StoneroomEFFECT_StoneCorridorEFFECT_SPORT_STADIUMTANNOYEFFECT_SPORT_SQUASHCOURTbDynamicLightEFFECT_SPORT_SMALLSWIMMINGPOOL SpotlightbHiddenEFFECT_SPORT_GYMNASIUMEFFECT_SPORT_FULLSTADIUMResetPlayTeleportEffectGetCollisionExtentEFFECT_SPORT_EMPTYSTADIUM SunlightEFFECT_SPACESTATION_SMALLROOMSpawnControllerFor TargetFlash DrawType Distance!EFFECT_SPACESTATION_SHORTPASSAGEEFFECT_SPACESTATION_MEDIUMROOM EFFECT_SPACESTATION_LONGPASSAGEEFFECT_SPACESTATION_LARGEROOMEFFECT_SPACESTATION_HALLEFFECT_SPACESTATION_CUPBOARDEFFECT_SPACESTATION_ALCOVEEFFECT_SMALLWATERROOMEFFECT_Sewerpipe EFFECT_RoomEFFECT_QuarryEFFECT_PsychoticTriggeredPlayerStartEFFECT_PREFAB_WORKSHOPEFFECT_PREFAB_SCHOOLROOM IsRelevant AddToTeamEFFECT_PREFAB_PRACTISEROOMEFFECT_PREFAB_OUTHOUSE LocationName bDistanceFogDistanceFogColorDistanceFogStartDistanceFogEndEFFECT_PREFAB_CARAVANEFFECT_PIPE_SMALL BlendInTime BlendOutTime bIsUnique bFadeMessage LifetimePitchPosYUSize WaterVolume messagetypeFOVEFFECT_PIPE_LONGTHINEFFECT_PIPE_LARGEEFFECT_ParkinglotEFFECT_PaddedCellScriptControllerClassEFFECT_OUTDOORS_ROLLINGPLAINSEFFECT_OUTDOORS_DEEPCANYONEFFECT_OUTDOORS_CREEKReachedDestination PossessedBy UnPossessedVSize AdjustAimEFFECT_OUTDOORS_BACKYARD EFFECT_NoneEFFECT_Mountains RefreshRate TossWeaponFindInventoryTypeChangedWeaponEFFECT_MOOD_MEMORYTriggerTurnsOn HisMessage HerMessage NumToCount CountMessagePlayDyingSoundEFFECT_MOOD_HELL PlayWaitingEFFECT_MOOD_HEAVENTriggerToggleTriggerControl TriggerPoundEFFECT_LivingroomEFFECT_ICEPALACE_SMALLROOMEFFECT_ICEPALACE_SHORTPASSAGE bBlockedCompleteMessageEFFECT_ICEPALACE_MEDIUMROOMEFFECT_ICEPALACE_LONGPASSAGEEFFECT_ICEPALACE_LARGEROOMEFFECT_ICEPALACE_HALLFluidFrictionEFFECT_ICEPALACE_CUPBOARD bWaterVolumeKExtraLinearDampingKExtraAngularDampingEFFECT_ICEPALACE_COURTYARD ShakeRadius OffsetMag OffsetRate OffsetTime bAlwaysGibsDieFOV bCausesBloodEFFECT_ICEPALACE_ALCOVEEntrySoundNameGibPerterbationExitSoundNameEFFECT_HangarEFFECT_HallwayEFFECT_ForestEFFECT_FACTORY_SMALLROOMEFFECT_FACTORY_SHORTPASSAGEEFFECT_FACTORY_MEDIUMROOMEFFECT_FACTORY_LONGPASSAGEEFFECT_FACTORY_LARGEROOMEFFECT_FACTORY_HALLEFFECT_FACTORY_CUPBOARDEFFECT_FACTORY_COURTYARDEFFECT_FACTORY_ALCOVEEFFECT_DUSTYROOMEnemyEFFECT_DruggedPendingStasisPossessEFFECT_DRIVING_TUNNEL GameHasEndedClientGameEnded FearThisSpot ShakeViewbUseScriptFacing TransitionEFFECT_DRIVING_PITGARAGEIterationSectionStartClientPlaySoundThirdPersonEffectsPostNetBeginPlay ClientFlashPawnLeavingVolumeEFFECT_DRIVING_INCAR_SPORTSEFFECT_DRIVING_INCAR_RACERNotifyJumpApex RefireRateEFFECT_DRIVING_INCAR_LUXURYEFFECT_DRIVING_FULLGRANDSTANDEFFECT_DRIVING_EMPTYGRANDSTAND RateSelfEFFECT_DRIVING_COMMENTATORBotFire CanAttackNotify ShootHoopEFFECT_DOME_TOMBBotEFFECT_DOME_SAINTPAULS EFFECT_DizzyEFFECT_ConcertHallUBitsVBitsUClampVClampMipZero MaxColorBroadcastLocalizedMessagebMaskedEFFECT_CITY_UNDERPASSEFFECT_CITY_SUBWAYEFFECT_CITY_STREETSEFFECT_CITY_MUSEUMEFFECT_CITY_LIBRARYEFFECT_CITY_ABANDONED EFFECT_CityEFFECT_CHAPEL EFFECT_Cave Broadcast EndStatePalettePlayerController AIScriptVolume JUMP_Normal JUMP_DoubleJUMP_DodgeLeftJUMP_DodgeRightbAffectAllPlayers bAttenuateALERTNESS_IgnoreAllALERTNESS_IgnoreEnemiesALERTNESS_StayOnScriptALERTNESS_LeaveScriptForCombat Spectator VictoryDanceTriggerTurnsOffbDecayTimeScalebReflectionsScalebReflectionsDelayScale bReverbScalebReverbDelayScalebDecayHFLimitActionMessageCriticalEventPlusActionMessage_BRActionMessage_CTFActionMessage_DMActionMessage_DOMAction_CHANGELEVELScriptedActionAction_CHANGESCRIPTAction_CHANGETEAMACTION_ChangeWeaponAction_ConsoleCommandAction_CROUCHAction_DAMAGEINSTIGATORACTION_DestroyActorAction_DESTROYPAWNAction_DISPLAYMESSAGEAction_ENDSECTIONAction_FADEVIEWLatentScriptedActionACTION_FinishRotationACTION_FireWeaponAction_FORCEMOVETOPOINTACTION_FreezeACTION_FreezeOnAnimEndAction_PLAYANIMAction_GOTOACTIONAction_IFCONDITIONAction_IFRANDOMPCT ACTION_JumpEFFECT_OUTDOORS_VALLEYAction_LEAVESEQUENCEACTION_LocalizedMessageAction_MOVETOPLAYERAction_MOVETOPOINTAction_PLAYAMBIENTSOUNDAction_PLAYLOCALSOUNDAction_PLAYMUSICAction_PLAYSOUND Action_RUNAction_SETALERTNESSACTION_SetCoronaACTION_SetHiddenACTION_SetPhysicsAction_SETVIEWTARGETACTION_ShootTargetACTION_SpawnActorAction_STOPANIMATIONACTION_StopShootingAction_TELEPORTTOPOINTACTION_ThrowWeaponAction_TRIGGEREVENTAction_TURNTOWARDPLAYERAction_WAITFORANIMENDAction_WAITFOREVENTAction_WAITFORPLAYERAction_WAITFORTIMER Action_WALKAnimNotify_FireWeapon BlockedPathBurned BallLauncher CorrodedEFFECT_PIPE_RESONANTDepressurizedDrowned EFFECT_Alley EFFECT_ArenaEFFECT_AuditoriumEFFECT_BathroomEFFECT_CarpetedHallwayEFFECT_CASTLE_ALCOVEEFFECT_CASTLE_COURTYARDEFFECT_CASTLE_CUPBOARDEFFECT_CASTLE_HALLEFFECT_CASTLE_LARGEROOMEFFECT_CASTLE_LONGPASSAGEEFFECT_CASTLE_MEDIUMROOMEFFECT_CASTLE_SHORTPASSAGEEFFECT_CASTLE_SMALLROOMCriticalEventSetPosSizeYSizeX DestroyTag DrawPortal TextSize DrawText Revision ActorTagRotationOffset Probability ShootLocNoneNoneThirdPersonActorbFinishedFire MyScript S_CameraSetViewTargetaPawnTargetFocus FocalPoint MoveTargetnextController bAltFirebFirebJumpOverWall bNotifyApexbControlAnimations bIsPlayer FovAnglebActive bLowDetailPawnDamageEffectLookDir ViewFlash EntryActor ExitSound EntrySoundDestbInitiallyActive bTriggered bEnabled SavedTrigger FiringMode HitActor aimerror projStartFiredAmmunition OldRotYawbPhysicsAnimUpdateHealthPendingWeapon AlertnessbIgnorePlayFiringbWantsToCrouch bIsWalkingVictimControllerListGame bIsSpectatorTeamsTeam ViewTargetKiller newWeaponPCPRIN bTeamGameScore PlayerName instigatedByCurrentActionActionsbDonebLoggingEnabledPYPosYLTextOptionalObject RelatedPRI_2 RelatedPRI_1TexNumStart Destination Momentum HitLocation HitNormalEventInstigator DeltaTimeSongOtherloc SetAnimFrameStopAnimating SetDrawType SetDrawScalebCollideWorldEMusicTransition DrawScale Acceleration InstigatorbStasis bDeleteMebCoronaOwnerPhysics EPhysicsLightBrightnessNoneURL LocalMessageEffectsCrushed NewScriptS_SpecialEventNoneTriggerController bSkipViewDynamicLoadObject DestTexture CameraTagi CameraActorCameraActorItMessageTextureScrollingMessagetS FontColorbCapsOldTextLeadingMatch ReplacementbTimedClockwiseFrom_IntInt bShowMessageAlphaV OriginalNumRedirectionEvent bToggledbTriggerControlledbInitialValue ReturnValueRotMagRotRateRotTime Velocity Rotation Location KillTimeStartFlashScaleStartFlashFogEndFlashScale EndFlashFogZ DieDrawScale TimePassed bScreamedratio curScalecurFogYXCEntryActorNamePendingController ActionNumAnimsRemainingSequenceScriptCurrentAnimationbBroken bShootTarget bShootSpraybPendingShoot bFakeShotAbPendingDoubleJumpbFineWeaponControlScriptedFocusMyPlayerController NumShotsIterationCounter ScriptText HalfHeightLightWeaponAlertnessLevelNone AmbientSound LevelInfo GameInfo SkyZoneInfo MyPlayer Decoration PlayerStartPlayerReplicationInfoGameReplicationInfoFireYaw InventoryNone AIControllerNextMoveTarget ControllerPhysicsVolume TeamInfoWeaponAttachmentNavigationPoint ChangeTime bInitiallyOn bDelayFullOn RemainOnTimeInitialBrightness poundTime Triggers AvoidMarkerI3DL2ListenerCanvasChannelFontLevelClientPawnScriptedTextureNestingAnimNotify_ScriptedbShowLoadingMessageNextScriptTag NextScript CommandStrDamaged bBroadcastInfoBitmapMaterial KeypointActorYawSoundMessageTagEventClassPackagebXDonebYDonebZDoneDestinationTagbPlaySpawnEffectExternalEvent PauseTime bPressFirebPressAltFire originalPhys BaseAnimSwitchRotAnimIterations bLoopAnim StartFrame TextBufferEnum bFirstPlay ActionNumberTriggeredConditionTag JumpType FunctionStateRotatorStruct JumpAction MessageNum StrPropertyStructPropertyEAlertnessTypeArrayPropertyClassProperty NamePropertyObjectProperty HideActorTagNewPhysicsModeViewTargetTagbSpray ActorClassLocationOffsetbOffsetFromScriptedPawnWeaponVelocityFloatProperty BoolProperty IntProperty ByteProperty directionNoneNoneNoneNoneNoneNoneNoneDelaysActionMessage_SubTitle GetLifeTimeNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneSunIcon Palette141NoneNoneNoneNoneNoneNonebCollideActorsCanDoubleJump bBlockableTriggersEventNextNeededEventE Palette145 S_CounterbStartBlockedNoneActionCompletedGetLocalPlayerControllerUsedByUserJunkyard_brief4aACTION_SubTitlesLastMinuteHack_ShipIt FireWeaponAt GetSoundAddHudOverlayVolumeTriggerPrecacheSoundClientRoundEndedPrecacheAnnouncerAction_PLAYANNOUNCEMENTHeight DisplayTimeHackPlayFireSoundRoundHasEndedSetDoubleJumpQueueAnnouncementMaterialVSizeACTION_HealActor HealDamageCheckForErrors KDriverLeaveRender Play_Intro3Hack_RIP_Epic_MegaCarMotherShip_introHack_I_Love_Mina Play_Brief4 Action_USE Play_Brief5Junkyard_brief5a Play_Brief6Junkyard_brief6a Play_Brief7Junkyard_brief7aPosXACTION_FireWeaponAtScriptedHudOverlayWidthACTION_DamageActorAction_DrawHUDMaterialMaterialUSize DamageAmountDrivenVehicleBaseStatusAnnouncerFirePropertiesClipY SubTitleModeRoleVehicleClipX HUDMaterial HudOverlayNetModebRewardSoundsmyHUDAnnouncerVoice ProcessEvent SubTitles DamageTag LocalPlayerNameSceneSubtitles HealAmountSSShootTargetTagbChangingPawnsOverlayHW SoundNamebSoundsPrecached ShootTarget MaterialHUD ESST_Mode WhiteColorHealTagNoneCompleteOnLIPSincAnimLIPSincAnimEndACTION_WaitForLIPSincAnimEndRadiusACTION_PlayLIPSincPlayLIPSincAnimTitleLIPSincAnimNameNoneNoneNoneNoneKarmaBoostVolumeActivateBoost TryBoostPawnEntryActorNameUnTouchEntryAngleFactorbBoostRelativeAffectedClasses BoostForce EntryAnglePawnEntryActorGravityNoneNoneNoneNoneNoneNoneNone SpecialCostKarmaBoostDestbVehicleDestinationbSpecialForcedPath ReachSpecbCanDoTrickJumpsNoneNoneNoneNoneNoneNonepxXBT* _hhh u8Erhhʁ)hqYԇhqYԇhqY8Er8Er8Erh8Er4=h8Er8Er8Er8Er7zh,e,eҽҽ8Er8ErhqY8Erhh8Erh8Er8Erh8Erh7zhhhh7zhʁ)hhh7zhhhhhh u u uhhhhhhhhhhhhhhhhq }@"mn I30 .Ʉ@E**7z*7z*..**]unspecified actionmaUU308Er.*7z*ҽҽmm_G ( GrT_*7za**4=***.**.******.***.****.*.ɇhh*h**,e***..pF^i$HBT$BEmmmm}mmrmmmmk@mm+mmR W =l   GmLmmnmmmm"@mmJm4m0mmf @mJmj mmmmmmrmj|bB2%jx@%$"#! e"*6g$Y?|"mma@mmEmmmmSmml mmmmmmmmdmmVmmW \ "\' Gm@mmSGm@wG' uJ؂ud SmmZmmG8mjmm@mmmmmmVmmmm.mmmmmmmx d[204=.**h**h*h*h****a$L>b$L>]$?Mplay animationSmm7mGmmmmmmmm<mmummFmmC>mK mmmm@mmymmmmJmmmmmmFmmbmmm'm\mm:mmbh.$h& Gm@mmmmmmmmmmmmm'mNmmMmf@mmmm`mmTmmmmmmmmmmmmm~V&HV : GmTmmcmmmmP mmmm^@mRmP@mmmmmPmm@mo mmmmmmc mm$mm_ mmhmm mmqmmmmtmm^,mMmmmc mmmHmam1mmZmmzmmmy mmVmmDmmm]mm}mv] dBN*8Er7zh7zq mmmmmmmmQmmDmmmmTmmUmmmm{ } H* GmnmfmmmmEmmYm]d B3_F$pI]%o was depressurized by %k.e]%o was depressurized.g]%o was depressurized.mS`@Se$?mmjL J( Gmm`iLl i Gmmg@m\ mmOmh@mmg@mmh@mmmmommmmmmmm2mmqmmummmmmmm]mmmmK-my-mz-m#_ H( GmWn B>C( Gm}p ACw( Gm&mAmmBmm mmW mmmmD@8mE@8mF8mRmmmAmm[WmNmmNmmG@mmSmLmmmSmmmmmmzmImm],m\mmmmmmmcm{mmkmm{mmmmvvmmme C2jx@F%$"#! cd*6|"mmamBmmrmmammompmSmmHmmhm@mmuvwxmvmmmxmymmbmmm}m~mSmmBBmopqrmmmmmmhmmcmmI6DT!m(6-'R-G6aTRM-K6r%6 aTR(U6 U%&' GmJ]_?,]a%]<]* GmTLb:Lr9:L5DL'L( GmUmKmVmmml mmmh mmMmP mmB mm^u SM  Gms mmXj ]9( GmYh F1B( GmZf a, ( GmXd \'( Gm|a X:( Gm] mmxmmvmJ mmD mm} mmx mms mmmmf mmmmmO mmJ c( GmmmA mm| mmy mmu mmq mmm mmmmB>ms>m[mmmmmgm|?>'pppp9V Scripted Sequence BROKEN 9V  ACTION 9V-(w+*.+  =mGmmmI mm}y 9 n Gm}N 5k!}P-Jq!?/Fu!-ZX-:$$M-<;8BUbx;/w* wa -/w&"t& !Q*bAU&r* 9?99  a*b #-\ 9?99 YYr*P 9?99  a; Q=mG@dmm 9 Gmp mm@7I (r%-(*H Gmf WM >W W*JV, 3 Gmd mmY UV[w*aa GmRmmCmm,N ^  -Z Gm\mmmmWmmHmmI-mJ-m(mL(mM(mN(mO(mP(mQ(m\Gm%GmOmommmmWmmXmmAmmWmL,m\,mt@,m8 0 ) P.TriggerEvent(RedirectionEvent,self,P); } } kb2jy O>$"#! TSmmG//============================================================================= // RockingSkyZoneInfo. //============================================================================= class RockingSkyZoneInfo extends SkyZoneInfo showcategories(Movement); m[Blu?4Emm_//============================================================================= // ScaledSprite. //============================================================================= class ScaledSprite extends Decoration; mHclass ScriptedAction extends Object abstract hidecategories(Object) collapsecategories editinlinenew; var localized string ActionString; var bool bValidForTrigger; event ActionCompleted(); // Called when Action is complete event PostBeginPlay( ScriptedSequence SS ); // Called when level starts event Reset(); // Called when level resets function bool InitActionFor(ScriptedController C) { return false; } function bool EndsSection() { return false; } function bool StartsSection() { return false; } function ScriptedSequence GetScript(ScriptedSequence S) { return S; } function ProceedToNextAction(ScriptedController C) { C.ActionNum += 1; } function ProceedToSectionEnd(ScriptedController C) { local int Nesting; local ScriptedAction A; While ( C.ActionNum < C.SequenceScript.Actions.Length ) { A = C.SequenceScript.Actions[C.ActionNum]; if ( A.StartsSection() ) Nesting++; else if ( A.EndsSection() ) { Nesting--; if ( Nesting < 0 ) return; } C.ActionNum += 1; } } function string GetActionString() { return ActionString; } AUoM-M $9@$\B?"D" $@ $ ? $\>" $/]=" $T=$lg>$G=$$2BF$33Bmm|// ScriptedController // AI controller which is controlling the pawn through a scripted sequence specified by // an AIScript class ScriptedController extends AIController; var controller PendingController; // controller which will get this pawn after scripted sequence is complete var int ActionNum; var int AnimsRemaining; var ScriptedSequence SequenceScript; var LatentScriptedAction CurrentAction; var Action_PLAYANIM CurrentAnimation; var bool bBroken; var bool bShootTarget; var bool bShootSpray; var bool bPendingShoot; var bool bFakeShot; // FIXME - this is currently a hack var bool bUseScriptFacing; var bool bPendingDoubleJump; var bool bFineWeaponControl; var bool bChangingPawns; var Actor ScriptedFocus; var PlayerController MyPlayerController; var int NumShots; var name FiringMode; var int IterationCounter; var int IterationSectionStart; function bool WeaponFireAgain(float RefireRate, bool bFinishedFire) { return bFineWeaponControl; } function SetDoubleJump() { bNotifyApex = true; bPendingDoubleJump = true; } event NotifyJumpApex() { local actor HitActor; local vector HitNormal,HitLocation, HalfHeight,Start; // double jump if ( bPendingDoubleJump ) { Pawn.bWantsToCrouch = false; if ( Pawn.CanDoubleJump() ) Pawn.DoDoubleJump(false); bPendingDoubleJump = false; } else if ( bJumpOverWall ) { // double jump if haven't cleared obstacle Pawn.Acceleration = Destination - Pawn.Location; Pawn.Acceleration.Z = 0; HalfHeight = Pawn.GetCollisionExtent(); HalfHeight.Z *= 0.5; Start = Pawn.Location - Pawn.CollisionHeight * vect(0,0,0.5); HitActor = Pawn.Trace(HitLocation, HitNormal, Start + 8 * Normal(Pawn.Acceleration), Start, true,HalfHeight); if ( HitActor != None ) { Pawn.bWantsToCrouch = false; if ( Pawn.CanDoubleJump() ) Pawn.DoDoubleJump(false); } } } function TakeControlOf(Pawn aPawn) { if ( Pawn != aPawn ) { aPawn.PossessedBy(self); Pawn = aPawn; } GotoState('Scripting'); } function SetEnemyReaction(int AlertnessLevel); function DestroyPawn() { if ( Pawn != None ) Pawn.Destroy(); Destroy(); } function Pawn GetMyPlayer() { if ( (MyPlayerController == None) || (MyPlayerController.Pawn == None) ) ForEach DynamicActors(class'PlayerController',MyPlayerController) if ( MyPlayerController.Pawn != None ) break; if ( MyPlayerController == None ) return None; return MyPlayerController.Pawn; } function Pawn GetInstigator() { if ( Pawn != None ) return Pawn; return Instigator; } function Actor GetSoundSource() { if ( Pawn != None ) return Pawn; return SequenceScript; } function bool CheckIfNearPlayer(float Distance) { local Pawn MyPlayer; MyPlayer = GetMyPlayer(); return ( (MyPlayer != None) && (VSize(Pawn.Location - MyPlayer.Location) < Distance+CollisionRadius+MyPlayer.CollisionRadius ) && Pawn.PlayerCanSeeMe() ); } function ClearScript() { ActionNum = 0; CurrentAction = None; CurrentAnimation = None; ScriptedFocus = None; Pawn.SetWalking(false); Pawn.ShouldCrouch(false); } function SetNewScript(ScriptedSequence NewScript) { MyScript = NewScript; SequenceScript = NewScript; Focus = None; ClearScript(); SetEnemyReaction(3); SequenceScript.SetActions(self); } function ClearAnimation() { AnimsRemaining = 0; bControlAnimations = false; CurrentAnimation = None; Pawn.PlayWaiting(); } function int SetFireYaw(int FireYaw) { FireYaw = FireYaw & 65535; if ( Pawn.Physics != PHYS_None && Pawn.Physics != PHYS_Karma && (Abs(FireYaw - (Rotation.Yaw & 65535)) > 8192) && (Abs(FireYaw - (Rotation.Yaw & 65535)) < 57343) ) { if ( FireYaw ClockwiseFrom Rotation.Yaw ) FireYaw = Rotation.Yaw + 8192; else FireYaw = Rotation.Yaw - 8192; } return FireYaw; } function rotator AdjustAim(FireProperties FiredAmmunition, vector projStart, int AimError) { local rotator LookDir; // make sure bot has a valid target if ( Target == None ) Target = ScriptedFocus; if ( Target == None ) { Target = Enemy; if ( Target == None ) return Pawn.Rotation; } LookDir = rotator(Target.Location - projStart); LookDir.Yaw = SetFireYaw(LookDir.Yaw); return LookDir; } function LeaveScripting(); state Scripting { function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { Super.DisplayDebug(Canvas,YL,YPos); Canvas.DrawText("AIScript "$SequenceScript$" ActionNum "$ActionNum, false); YPos += YL; Canvas.SetPos(4,YPos); CurrentAction.DisplayDebug(Canvas,YL,YPos); } /* UnPossess() scripted sequence is over - return control to PendingController */ function UnPossess() { Pawn.UnPossessed(); if ( (Pawn != None) && (PendingController != None) ) { PendingController.bStasis = false; PendingController.Possess(Pawn); } Pawn = None; if ( !bChangingPawns ) Destroy(); } function LeaveScripting() { UnPossess(); } function InitForNextAction() { SequenceScript.SetActions(self); if ( CurrentAction == None ) { LeaveScripting(); return; } MyScript = SequenceScript; if ( CurrentAnimation == None ) ClearAnimation(); } function Trigger( actor Other, pawn EventInstigator ) { if ( CurrentAction.CompleteWhenTriggered() ) CompleteAction(); } function Timer() { if ( CurrentAction.WaitForPlayer() && CheckIfNearPlayer(CurrentAction.GetDistance()) ) CompleteAction(); else if ( CurrentAction.CompleteWhenTimer() ) CompleteAction(); } function AnimEnd(int Channel) { if ( CurrentAction.CompleteOnAnim(Channel) ) { CompleteAction(); return; } if ( Channel == 0 ) { if ( (CurrentAnimation == None) || !CurrentAnimation.PawnPlayBaseAnim(self,false) ) ClearAnimation(); } else { // FIXME - support for CurrentAnimation play on other channels Pawn.AnimEnd(Channel); } } // ifdef WITH_LIPSINC function LIPSincAnimEnd() { if ( CurrentAction.CompleteOnLIPSincAnim() ) { CompleteAction(); return; } else { Pawn.LIPSincAnimEnd(); } } // endif function CompleteAction() { CurrentAction.ActionCompleted(); ActionNum++; GotoState('Scripting','Begin'); } function SetMoveTarget() { local Actor NextMoveTarget; Focus = ScriptedFocus; NextMoveTarget = CurrentAction.GetMoveTargetFor(self); if ( NextMoveTarget == None ) { GotoState('Broken'); return; } if ( Focus == None ) Focus = NextMoveTarget; MoveTarget = NextMoveTarget; if ( !ActorReachable(MoveTarget) ) { MoveTarget = FindPathToward(MoveTarget,false); if ( Movetarget == None ) { AbortScript(); return; } if ( Focus == NextMoveTarget ) Focus = MoveTarget; } } function AbortScript() { LeaveScripting(); } /* WeaponFireAgain() Notification from weapon when it is ready to fire (either just finished firing, or just finished coming up/reloading). Returns true if weapon should fire. If it returns false, can optionally set up a weapon change */ function bool WeaponFireAgain(float RefireRate, bool bFinishedFire) { if ( bFineWeaponControl ) return true; if ( Pawn.bIgnorePlayFiring ) { Pawn.bIgnorePlayFiring = false; return false; } if ( NumShots < 0 ) { bShootTarget = false; bShootSpray = false; StopFiring(); return false; } if ( bShootTarget && (ScriptedFocus != None) && !ScriptedFocus.bDeleteMe ) { Target = ScriptedFocus; if ( (!bShootSpray && ((Pawn.Weapon.RefireRate() < 0.99) && !Pawn.Weapon.CanAttack(Target))) || !Pawn.Weapon.BotFire(bFinishedFire,FiringMode) ) { Enable('Tick'); //FIXME - use multiple timer for this instead bPendingShoot = true; return false; } if ( NumShots > 0 ) { NumShots--; if ( NumShots == 0 ) NumShots = -1; } return true; } StopFiring(); return false; } function Tick(float DeltaTime) { if ( bPendingShoot ) { bPendingShoot = false; MayShootTarget(); } if ( !bPendingShoot && ((CurrentAction == None) || !CurrentAction.StillTicking(self,DeltaTime)) ) disable('Tick'); } function MayShootAtEnemy(); function MayShootTarget() { WeaponFireAgain(0,false); } function EndState() { bUseScriptFacing = true; bFakeShot = false; } Begin: InitforNextAction(); if ( bBroken ) GotoState('Broken'); if ( CurrentAction.TickedAction() ) enable('Tick'); if ( !bFineWeaponControl ) { if ( !bShootTarget ) { bFire = 0; bAltFire = 0; } else { Pawn.Weapon.RateSelf(); if ( bShootSpray ) MayShootTarget(); } } if ( CurrentAction.MoveToGoal() ) { Pawn.SetMovementPhysics(); WaitForLanding(); KeepMoving: SetMoveTarget(); MayShootTarget(); if ( (MoveTarget != None) && (MoveTarget != Pawn) ) { MoveToward(MoveTarget, Focus,,,Pawn.bIsWalking); if ( (MoveTarget != CurrentAction.GetMoveTargetFor(self)) || !Pawn.ReachedDestination(CurrentAction.GetMoveTargetFor(self)) ) Goto('KeepMoving'); } CompleteAction(); } else if ( CurrentAction.TurnToGoal() ) { Pawn.SetMovementPhysics(); Focus = CurrentAction.GetMoveTargetFor(self); if ( Focus == None ) FocalPoint = Pawn.Location + 1000 * vector(SequenceScript.Rotation); FinishRotation(); CompleteAction(); } else { //Pawn.SetPhysics(PHYS_RootMotion); Pawn.Acceleration = vect(0,0,0); Focus = ScriptedFocus; if ( !bUseScriptFacing ) FocalPoint = Pawn.Location + 1000 * vector(Pawn.Rotation); else if ( Focus == None ) { MayShootAtEnemy(); FocalPoint = Pawn.Location + 1000 * vector(SequenceScript.Rotation); } FinishRotation(); MayShootTarget(); } } // Broken scripted sequence - for debugging State Broken { Begin: warn(Pawn$" Scripted Sequence BROKEN "$SequenceScript$" ACTION "$CurrentAction); Pawn.bPhysicsAnimUpdate = false; Pawn.StopAnimating(); if ( GetMyPlayer() != None ) PlayerController(GetMyPlayer().Controller).SetViewTarget(Pawn); } mL//============================================================================= // EFFECT_ICEPALACE_CUPBOARD //============================================================================ class EFFECT_ICEPALACE_CUPBOARD extends I3DL2Listener editinlinenew; mH3//============================================================================= // ScriptedSequence // used for setting up scripted sequences for pawns. // A ScriptedController is spawned to carry out the scripted sequence. //============================================================================= class ScriptedSequence extends AIScript; var(AIScript) export editinline Array Actions; var class ScriptControllerClass; function PostBeginPlay() { local int i; super.PostBeginPlay(); for ( i=0; i 0 ) { log(self$" has no Actions!"); return true; } return Super.CheckForErrors(); } /* TakeOver() Spawn a scripted controller, which temporarily takes over the actions of the pawn, unless pawn is currently controlled by a scripted controller - then just change its script */ function TakeOver(Pawn P) { local ScriptedController S; if ( ScriptedController(P.Controller) != None ) S = ScriptedController(P.Controller); else { S = spawn(ScriptControllerClass); S.PendingController = P.Controller; if ( S.PendingController != None ) S.PendingController.PendingStasis(); } S.MyScript = self; S.TakeControlOf(P); S.SetNewScript(self); } //***************************************************************************************** // Script Changes function bool ValidAction(Int N) { return true; } function SetActions(ScriptedController C) { local ScriptedSequence NewScript; local bool bDone; if ( C.CurrentAnimation != None ) C.CurrentAnimation.SetCurrentAnimationFor(C); while ( !bDone ) { if ( C.ActionNum < Actions.Length ) { if ( ValidAction(C.ActionNum) ) NewScript = Actions[C.ActionNum].GetScript(self); else { NewScript = None; warn(GetItemName(string(self))$" action "$C.ActionNum@Actions[C.ActionNum].GetActionString()$" NOT VALID!!!"); } } else NewScript = None; if ( NewScript == None ) { C.CurrentAction = None; return; } if ( NewScript != self ) { C.SetNewScript(NewScript); return; } if ( Actions[C.ActionNum] == None ) { Warn(self$" no action "$C.ActionNum$"!!!"); C.CurrentAction = None; return; } bDone = Actions[C.ActionNum].InitActionFor(C); if ( bLoggingEnabled ) log(GetItemName(string(C.Pawn))$" script "$GetItemName(string(tag))$" action "$C.ActionNum@Actions[C.ActionNum].GetActionString()); if ( !bDone ) { if ( Actions[C.ActionNum] == None ) { Warn(self$" has no action "$C.ActionNum$"!!!"); C.CurrentAction = None; return; } Actions[C.ActionNum].ActionCompleted(); Actions[C.ActionNum].ProceedToNextAction(C); } } } mr3//============================================================================= // PressureZone. //============================================================================= class PressureVolume extends PhysicsVolume; var() float KillTime; // How long to kill the player? var() float StartFlashScale; // Fog values for client death sequence var() Vector StartFlashFog; var() float EndFlashScale; var() Vector EndFlashFog; var float DieFOV; // Field of view when dead (interpolates) var float DieDrawScale; // Drawscale when dead var float TimePassed; var bool bTriggered; // Ensure that it doesn't update until it should var bool bScreamed; function Trigger( actor Other, pawn EventInstigator ) { local Controller P; // The pressure zone has been triggered to kill something Instigator = EventInstigator; if ( (Instigator.Controller != None) && Instigator.Controller.IsA('Bot') ) { // taunt the victim for ( P=Level.ControllerList; P!=None; P=P.NextController ) if( (P.Pawn != None) && (P.Pawn.PhysicsVolume == self) && (P.Pawn.Health > 0) ) { Instigator.Controller.Target = P.Pawn; Instigator.Controller.GotoState('VictoryDance'); } } // Engage Tick so that death may be slow and dramatic TimePassed = 0; bTriggered = true; bScreamed = false; Disable('Trigger'); Enable('Tick'); } function Tick( float DeltaTime ) { local float ratio, curScale; local vector curFog; local PlayerController PC; local Controller P, Killer; local bool bActive; if( !bTriggered ) { Disable('Tick'); return; } TimePassed += DeltaTime; ratio = TimePassed/KillTime; if( ratio > 1.0 ) ratio = 1.0; for ( P=Level.ControllerList; P!=None; P=P.NextController ) { // Ensure player hasn't been dispatched through other means already (suicide?) if( (P.Pawn.PhysicsVolume == self) && (P.Pawn.Health > 0) && !P.Pawn.IsA('Spectator') ) { bActive = true; P.Pawn.SetDrawScale(1 + (DieDrawScale-1) * ratio); // Maybe scream? if( !bScreamed && P.bIsPlayer && (Ratio > 0.2) && (FRand() < 2 * DeltaTime) ) { // Scream now (from the terrible pain) bScreamed = true; P.Pawn.PlayDyingSound(); } // Fog & Field of view PC = PlayerController(P); if( PC != None ) { curScale = (EndFlashScale-StartFlashScale)*ratio + StartFlashScale; curFog = (EndFlashFog -StartFlashFog )*ratio + StartFlashFog; PC.ClientFlash( curScale, 1000 * curFog ); PC.SetFOVAngle( (DieFOV-PC.default.FOVAngle)*ratio + PC.default.FOVAngle); } if ( ratio == 1.0 ) { if ( Instigator != None ) Killer = Instigator.Controller; P.Pawn.Died(Killer, class'Depressurized', P.Pawn.Location); MakeNormal(P.Pawn); } } } if( !bActive && (TimePassed >= KillTime) ) { Disable('Tick'); Enable('Trigger'); bTriggered = false; } } function MakeNormal(Pawn P) { local PlayerController PC; P.SetDrawScale(P.Default.DrawScale); PC = PlayerController(P.Controller); if( PC != None ) PC.SetFOVAngle( PC.Default.FOVAngle ); } // When an actor leaves this zone. event PawnLeavingVolume(Pawn Other) { MakeNormal(Other); Super.PawnLeavingVolume(Other); } mm//============================================================================= // ScriptedTrigger // replaces Counter, Dispatcher, SpecialEventTrigger //============================================================================= class ScriptedTrigger extends ScriptedSequence; #exec Texture Import File=..\engine\textures\TrigSpcl.pcx Name=S_SpecialEvent Mips=Off MASKED=1 var ScriptedTriggerController TriggerController; function PostBeginPlay() { super.PostBeginPlay(); TriggerController = Spawn(class'ScriptedTriggerController'); if ( TriggerController != None ) TriggerController.InitializeFor( Self ); else log("ScriptedTrigger::PostBeginPlay - Couldn't Spawn ScriptedTriggerController"); } /* WaitingForEvent() Returns next event this scripted sequence is waiting for with an ACTION_WaitFOrEvent */ function name NextNeededEvent() { local int i, Start; if ( TriggerController != None ) Start = TriggerController.ActionNum; for ( i=Start; i"d $D<"d $o<$n>$ ף=$$2BF$33Bmmz//============================================================================= // ScriptedTriggerController // used for playing ScriptedTrigger scripts // A ScriptedTriggerController never has a pawn //============================================================================= class ScriptedTriggerController extends ScriptedController; function InitializeFor(ScriptedTrigger T) { SequenceScript = T; ActionNum = 0; SequenceScript.SetActions(self); GotoState('Scripting'); } function GameHasEnded() {} function ClientGameEnded() {} function RoundHasEnded() {} function ClientRoundEnded() {} function DestroyPawn() { if ( Instigator != None ) Instigator.Destroy(); } function ClearAnimation() {} function SetNewScript(ScriptedSequence NewScript) { SequenceScript = NewScript; ActionNum = 0; Focus = None; SequenceScript.SetActions(self); } state Scripting { function Trigger( actor Other, pawn EventInstigator ) { Instigator = EventInstigator; Super.Trigger(Other,EventInstigator); } function LeaveScripting() { Destroy(); } Begin: InitforNextAction(); if ( bBroken ) GotoState('Broken'); if ( CurrentAction.TickedAction() ) enable('Tick'); } // Broken scripted sequence - for debugging State Broken { Begin: warn(" Trigger Scripted Sequence BROKEN "$SequenceScript$" ACTION "$CurrentAction); } x_Rw-MwKi$@}ZZi$AT$ BEmmm//============================================================================= // SpectatorCam. //============================================================================= class SpectatorCam extends KeyPoint; var() bool bSkipView; // spectators skip this camera when flipping through cams var() float FadeOutTime; // fade out time if used as EndCam zyyv(K>~ Emmb//============================================================================= // A directional spotlight. //============================================================================= class Spotlight extends Light; |A{?J(K>~ZJEmmo//============================================================================= // Directional sunlight //============================================================================= class Sunlight extends Light; #exec Texture Import File=Textures\SunIcon.pcx Name=SunIcon Mips=Off MASKED=1 ~WWa@2}\o֔3}Zs3}Zsh3}Zsʁ)3}Zsʁ)h3},e,e,eh,e,eh,e,emmP//============================================================================= // TeamTrigger: triggers for all except pawns with matching team //============================================================================= class TeamTrigger extends Trigger; var() byte Team; var() bool bTimed; function PostBeginPlay() { Super.PostBeginPlay(); if ( bTimed ) SetTimer(2.5, true); } function Timer() { local Controller P; for ( P=Level.ControllerList; P!=None; P=P.NextController ) if ( (P.Pawn != None) && (abs(Location.Z - P.Pawn.Location.Z) < CollisionHeight + P.CollisionHeight) && (VSize(Location - P.Pawn.Location) < CollisionRadius) ) Touch(P.Pawn); SetTimer(2.5, true); } function bool IsRelevant( actor Other ) { if( !bInitiallyActive || !Level.Game.bTeamGame || (Other.Instigator == None) || Level.Game.IsOnTeam(Other.Instigator.Controller, Team) ) return false; return Super.IsRelevant(Other); } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, class damageType) { if ( (InstigatedBy != None) && Level.Game.bTeamGame && !Level.Game.IsOnTeam(InstigatedBy.Controller, Team) ) Super.TakeDamage(Damage, instigatedBy, HitLocation, Momentum, DamageType); } mN//============================================================================= // EFFECT_ICEPALACE_COURTYARD //============================================================================ class EFFECT_ICEPALACE_COURTYARD extends I3DL2Listener editinlinenew; mE class TriggeredCondition extends Triggers; var() bool bToggled; var() bool bEnabled; var() bool bTriggerControlled; // false if untriggered var bool bInitialValue; function PostBeginPlay() { Super.PostBeginPlay(); bInitialValue = bEnabled; } function Reset() { bEnabled = bInitialValue; } function Trigger( actor Other, pawn EventInstigator ) { if ( bToggled ) bEnabled = !bEnabled; else bEnabled = !bInitialValue; } function Untrigger( actor Other, pawn EventInstigator ) { if ( bTriggerControlled ) bEnabled = bInitialValue; } BES@Aw q}oB"#! TSmmKclass TriggeredPlayerStart extends PlayerStart; function Trigger( actor Other, pawn EventInstigator ) { bEnabled = !bEnabled; } D} >C1(K>ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)ʁ)TSzSwS\mmS=//============================================================================= // TriggerLight. // A lightsource which can be triggered on or off. //============================================================================= class TriggerLight extends Light; //----------------------------------------------------------------------------- // Variables. var() float ChangeTime; // Time light takes to change from on to off. var() bool bInitiallyOn; // Whether it's initially on. var() bool bDelayFullOn; // Delay then go full-on. var() float RemainOnTime; // How long the TriggerPound effect lasts var float InitialBrightness; // Initial brightness. var float Alpha, Direction; var actor SavedTrigger; var float poundTime; //----------------------------------------------------------------------------- // Engine functions. // Called at start of gameplay. simulated function BeginPlay() { // Remember initial light type and set new one. InitialBrightness = LightBrightness; if( bInitiallyOn ) { Alpha = 1.0; Direction = 1.0; } else { Alpha = 0.0; Direction = -1.0; } SetDrawType(DT_None); } // Called whenever time passes. function Tick( float DeltaTime ) { Alpha += Direction * DeltaTime / ChangeTime; if( Alpha > 1.0 ) { Alpha = 1.0; Disable( 'Tick' ); if( SavedTrigger != None ) SavedTrigger.EndEvent(); } else if( Alpha < 0.0 ) { Alpha = 0.0; Disable( 'Tick' ); if( SavedTrigger != None ) SavedTrigger.EndEvent(); } if( !bDelayFullOn ) LightBrightness = Alpha * InitialBrightness; else if( (Direction>0 && Alpha!=1) || Alpha==0 ) LightBrightness = 0; else LightBrightness = InitialBrightness; } //----------------------------------------------------------------------------- // Public states. // Trigger turns the light on. state() TriggerTurnsOn { function Trigger( actor Other, pawn EventInstigator ) { if( SavedTrigger!=None ) SavedTrigger.EndEvent(); SavedTrigger = Other; SavedTrigger.BeginEvent(); Direction = 1.0; Enable( 'Tick' ); } } // Trigger turns the light off. state() TriggerTurnsOff { function Trigger( actor Other, pawn EventInstigator ) { if( SavedTrigger!=None ) SavedTrigger.EndEvent(); SavedTrigger = Other; SavedTrigger.BeginEvent(); Direction = -1.0; Enable( 'Tick' ); } } // Trigger toggles the light. state() TriggerToggle { function Trigger( actor Other, pawn EventInstigator ) { if( SavedTrigger!=None ) SavedTrigger.EndEvent(); SavedTrigger = Other; SavedTrigger.BeginEvent(); Direction *= -1; Enable( 'Tick' ); } } // Trigger controls the light. state() TriggerControl { function Trigger( actor Other, pawn EventInstigator ) { if( SavedTrigger!=None ) SavedTrigger.EndEvent(); SavedTrigger = Other; SavedTrigger.BeginEvent(); if( bInitiallyOn ) Direction = -1.0; else Direction = 1.0; Enable( 'Tick' ); } function UnTrigger( actor Other, pawn EventInstigator ) { if( SavedTrigger!=None ) SavedTrigger.EndEvent(); SavedTrigger = Other; SavedTrigger.BeginEvent(); if( bInitiallyOn ) Direction = 1.0; else Direction = -1.0; Enable( 'Tick' ); } } state() TriggerPound { function Timer () { if (poundTime >= RemainOnTime) { Disable ('Timer'); } poundTime += ChangeTime; Direction *= -1; SetTimer (ChangeTime, false); } function Trigger( actor Other, pawn EventInstigator ) { if( SavedTrigger!=None ) SavedTrigger.EndEvent(); SavedTrigger = Other; SavedTrigger.BeginEvent(); Direction = 1; poundTime = ChangeTime; // how much time will pass till reversal SetTimer (ChangeTime, false); // wake up when it's time to reverse Enable ('Timer'); Enable ('Tick'); } } FA(@ Eק*ެ؂u3} uʁ) u3},e uʁ),e,e\$D]:1 A A A^:1zDzDzD_$@@d Smmy//============================================================================= // ViewShaker: Shakes view of any playercontrollers - amb - rewrote this // within the ShakeRadius //============================================================================= class ViewShaker extends Triggers; //----------------------------------------------------------------------------- // Variables. var() float ShakeRadius; // radius within which to shake player views var() vector RotMag; // how far to rot view var() vector RotRate; // how fast to rot view var() float RotTime; // how much time to rot the instigator's view var() vector OffsetMag; // max view offset vertically var() vector OffsetRate; // how fast to offset view vertically var() float OffsetTime; // how much time to offset view //----------------------------------------------------------------------------- // Functions. simulated function Trigger( actor Other, pawn EventInstigator ) { local Controller C; local PlayerController LocalPlayer; LocalPlayer = Level.GetLocalPlayerController(); if ( (LocalPlayer != None) && (VSize(Location - LocalPlayer.ViewTarget.Location) < ShakeRadius) ) LocalPlayer.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); for ( C=Level.ControllerList; C!=None; C=C.NextController ) if ( (PlayerController(C) != None) && (C != LocalPlayer) && (VSize(Location - PlayerController(C).ViewTarget.Location) < ShakeRadius) ) C.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime); } Hji@` 2GPbQ d]PlayerSounds.FootstepWater1f]GeneralImpacts.ImpactSplash2~ ]xGame.WaterSplashQ]xGame.WaterRingV$@X[\*6@ @]$A^$DY$ @Z$>Z] under watermmQ class WaterVolume extends PhysicsVolume; var string EntrySoundName, ExitSoundName, EntryActorName, PawnEntryActorName; function PostBeginPlay() { Super.PostBeginPlay(); if ( (EntrySound == None) && (EntrySoundName != "") ) EntrySound = Sound(DynamicLoadObject(EntrySoundName,class'Sound')); if ( (ExitSound == None) && (ExitSoundName != "") ) ExitSound = Sound(DynamicLoadObject(ExitSoundName,class'Sound')); if ( (EntryActor == None) && (EntryActorName != "") ) EntryActor = class(DynamicLoadObject(EntryActorName,class'Class')); if ( (PawnEntryActor == None) && (PawnEntryActorName != "") ) PawnEntryActor = class(DynamicLoadObject(PawnEntryActorName,class'Class')); } [I~/-M $9@$= ?""$\@ $? $\>"0 $="h $ 0=$ףp>$>$$2BF$33Bmm@mse-@`2/K\7bQ hhh u u3},e,eh,eh,eh,eh,e,eh u u u uh,eh,eh,e,ehh,e3},e,e,eh,ehh,e,eh,e,ea$CY_mmAfC'fDf GmH//============================================================================= // EFFECT_ICEPALACE_ALCOVE //============================================================================ class EFFECT_ICEPALACE_ALCOVE extends I3DL2Listener editinlinenew; mrED=5w.E*.Eaf,Ew,*,v EEM GMcO-M $,@$= W?" "$ף0@ $H? $)\>"d $ #<"P $<$/$>$Q=$$2BF$33Bmmu//============================================================================= // EFFECT_Hangar //============================================================================= class EFFECT_Hangar extends I3DL2Listener editinlinenew; mfclass MessageTextureClient extends Info placeable; var() ScriptedTexture MessageTexture; var() localized string ScrollingMessage; var localized string HisMessage, HerMessage; var() Font Font; var() color FontColor; var() bool bCaps; var string OldText; /* parameters for ScrollingMessage: %p - local player name %h - his/her for local player %lp - leading player's name %lf - leading player's frags */ simulated function PostNetBeginPlay() { if(MessageTexture != None) MessageTexture.Client = Self; SetTimer(1,true); } simulated function Timer() { local string Text; local PlayerReplicationInfo Leading, PRI; Text = ScrollingMessage; if(InStr(Text, "%lf") != -1 || InStr(Text, "%lp") != -1) { // find the leading player Leading = None; ForEach AllActors(class'PlayerReplicationInfo',PRI) if ( !PRI.bIsSpectator && (Leading==None || PRI.Score>Leading.Score) ) Leading = PRI; if(Leading != None) { Text = Replace(Text, "%lp", Leading.PlayerName); Text = Replace(Text, "%lf", string(int(Leading.Score))); } else Text = ""; } if(bCaps) Text = Caps(Text); if(Text != OldText) { OldText = Text; MessageTexture.Revision++; } } simulated event RenderTexture(ScriptedTexture Tex) { local int SizeX, SizeY; Tex.TextSize(OldText,Font,SizeX,SizeY); Tex.DrawText( (Tex.USize - SizeX) * 0.5, (Tex.VSize - SizeY) * 0.5, OldText, Font, FontColor ); } simulated function string Replace(string Text, string Match, string Replacement) { local int i; i = InStr(Text, Match); if(i != -1) return Left(Text, i) $ Replacement $ Replace(Mid(Text, i+Len(Match)), Match, Replacement); else return Text; } mSmmmme 3X1w *  _ -@ 7` + L+*pppO9V action 9S   NOT VALID!!!+*r+* * =w+ M+ r *ppp9V no action 9S !!! * -@   :-ppppO9V  script O9W action 9S  -@r *ppp9V has no action 9S !!! *  n   . 1 GPgU=v-M $33IB"$ A $k>" $ ף<": $v>$V/Ӧ>$>$ڀ>$cҘN$u' ΦSĘҋ/,S$v6z+jSccSSI>NcjcjjvSSccjvIIIISIIII>>?>SSSSII>cĮcS/'>>/ScjjS^EL3/O)b' }Y  ' g  '  .nY "  }Y "%'    sn!' kf.  "%%'O9 %%'.  }R '%)=B)2$YH )=JMa   m meVd`<Ad-k GQC,2 ]j_׿e]Oo~Oo~Oo~Oo~zVGBzVGBzVGBzVGBzVGBOo~Oo~%$"#! B]hisC]herISmmmm`RmRmhclass LatentScriptedAction extends ScriptedAction abstract; function DisplayDebug(Canvas Canvas, out float YL, out float YPos) { Canvas.DrawText("Action "$GetActionString(), false); YPos += YL; Canvas.SetPos(4,YPos); } function bool InitActionFor(ScriptedController C) { C.CurrentAction = self; return true; } //***************************************************************************************** // Action Completion Queries function bool CompleteWhenTriggered() { return false; } function bool CompleteOnAnim(int Channel) { return false; } // ifdef WITH_LIPSINC function bool CompleteOnLIPSincAnim() { return false; } // endif function bool CompleteWhenTimer() { return false; } function bool WaitForPlayer() { return false; } function bool TickedAction() { return false; } //***************************************************************************************** // Action Queries function bool StillTicking(ScriptedController C, float DeltaTime) { return false; } function bool MoveToGoal() { return false; } function bool TurnToGoal() { return false; } function Actor GetMoveTargetFor(ScriptedController C) { return C.SequenceScript.GetMoveTarget(); } function float GetDistance() { return 0; } mcb{ bc G mc //============================================================================= // FearSpot. // Creatures will tend to back away when entering this spot // To be effective, there should also not be any paths going through the area //============================================================================= class FearSpot extends AvoidMarker placeable; var() bool bInitiallyActive; function Touch( actor Other ) { if ( bInitiallyActive && (Pawn(Other) != None) && (Pawn(Other).Controller != None) ) Pawn(Other).Controller.FearThisSpot(self); } function Trigger( actor Other, pawn EventInstigator ) { bInitiallyActive = !bInitiallyActive; } memmfmmgmm@mYih -M $B$>" $q= ?" $T%>" $X9=mcLM@ iִ3Tqhh,ei$HCmmH//============================================================================= // EFFECT_WOODEN_SMALLROOM //============================================================================ class EFFECT_WOODEN_SMALLROOM extends I3DL2Listener editinlinenew; jgk'-M"P""$q=J? $ ף> $R^?"8 $o=" $h<$E$33BmmJ//============================================================================= // EFFECT_FACTORY_SMALLROOM //============================================================================ class EFFECT_FACTORY_SMALLROOM extends I3DL2Listener editinlinenew; m|]2)Z/a0 ]a$8]$10Ww|*|a?`'u!) Gljn]-M $ff?$Q?"P"8"$(? $ff&? $?" $ #<"8 $<$F=$)\=$$)kE$@Cmmm)'H| Gmoxy0c`w8*xL%%xx88 8 9D_ G mP//============================================================================= // EFFECT_FACTORY_SHORTPASSAGE //============================================================================ class EFFECT_FACTORY_SHORTPASSAGE extends I3DL2Listener editinlinenew; qkr5_fm-M $ff?$ #?"P"8"$!@ $ff&? $?" $ #<" $=$q= >$k>$$)kE$@CmmN//============================================================================= // EFFECT_WOODEN_SHORTPASSAGE //============================================================================ class EFFECT_WOODEN_SHORTPASSAGE extends I3DL2Listener editinlinenew; mu@mmZ@mmL//============================================================================= // EFFECT_FACTORY_MEDIUMROOM //============================================================================ class EFFECT_FACTORY_MEDIUMROOM extends I3DL2Listener editinlinenew; shw8%-M"""$? $? $R^?" $D<"D $<$E$33BmmJ//============================================================================= // EFFECT_WOODEN_MEDIUMROOM //============================================================================ class EFFECT_WOODEN_MEDIUMROOM extends I3DL2Listener editinlinenew; vlyER-M $33?$Q?"P"8"$ף0@ $ff&? $?" $X9<"p $j<$-2>$)\=$$)kE$@CmmvC'wv*va?' Gmz)#F^~%lf~%lp"*/a0 VV-,r"*V""V10w"*K%lp"K%lf9S9D"-\C{LLv GmN//============================================================================= // EFFECT_FACTORY_LONGPASSAGE //============================================================================ class EFFECT_FACTORY_LONGPASSAGE extends I3DL2Listener editinlinenew; |m}r-M $ff?$ #?"P"8"$@ $ff&? $?" $ ף<"| $P=$q= >$k>$$)kE$@CmmJ//============================================================================= // EFFECT_FACTORY_LARGEROOM //============================================================================ class EFFECT_FACTORY_LARGEROOM extends I3DL2Listener editinlinenew; m{XyFGXLZTSXU9D9?XT?9D9?XS?LZ] G ~n@W+-M $33?$@?"P""p$@ $\? $?"$ $w=" $j<$Dl>$)\=$$)kE$@Cmm@//============================================================================= // EFFECT_FACTORY_HALL //============================================================================ class EFFECT_FACTORY_HALL extends I3DL2Listener editinlinenew; AoBS-M $33?$@?""p$@ $\? $?" $=" $/<$)\=$$)kE$@CmmUKOAhN~Uf_NppUNPKUN}ffPeU GmH//============================================================================= // EFFECT_FACTORY_CUPBOARD //============================================================================ class EFFECT_FACTORY_CUPBOARD extends I3DL2Listener editinlinenew; DpE -M $?$G!?"P"8"$H> $ff&? $?" $ #< $o=$"=$)\=$$)kE$@CmmJ//============================================================================= // EFFECT_FACTORY_COURTYARD //============================================================================ class EFFECT_FACTORY_COURTYARD extends I3DL2Listener editinlinenew; mN@mFqHه:5-M $?$?""p$z@ $z> $)\?" $Q="0 $w=$z>$$)kE$@CmmD//============================================================================= // EFFECT_FACTORY_ALCOVE //============================================================================ class EFFECT_FACTORY_ALCOVE extends I3DL2Listener editinlinenew; mwOG WT-ww.O*w.O*.O{ GIrK;r;-M $ff?$= ?"P"8"$H@ $ff&? $?", $ #<"P $=$x=$=$$)kE$@CmmJMv-w-w GmNmmmmz//============================================================================= // EFFECT_DUSTYROOM //============================================================================ class EFFECT_DUSTYROOM extends I3DL2Listener editinlinenew; xjP]k~-M"P"0"$? $= > $Q?" $w="p $h<$E$33BmmL2 P-[a @' GmQ)w*w*B66 ( Ga @' GOsSm-M $ff?$)\?""8"$? $\> $= W>" $o; $;$N>$L=$@$KF$L#CmmRIV}--rI*7$BI9:L(I Gmw//============================================================================= // EFFECT_Drugged //============================================================================= class EFFECT_Drugged extends I3DL2Listener editinlinenew; mmmTZp&M~{wA*-0BA9:LZAYXW GmL//============================================================================= // EFFECT_WOODEN_LONGPASSAGE //============================================================================ class EFFECT_WOODEN_LONGPASSAGE extends I3DL2Listener editinlinenew; UuY6-M $33?$?"$q=A $?" $o;" $ $q=J?"8 $ ף<" $t=$E$33BmmH//============================================================================= // EFFECT_WOODEN_LARGEROOM //============================================================================ class EFFECT_WOODEN_LARGEROOM extends I3DL2Listener editinlinenew; [l\J7-M"P""$? $> $Q?" $B`e=" $9H=$E$33BmmD//============================================================================= // EFFECT_DRIVING_TUNNEL //============================================================================ class EFFECT_DRIVING_TUNNEL extends I3DL2Listener editinlinenew; ]x^lĉ-M $ffF@$)\O?"|""$HZ@ $ףp? $?" $`P=" $@=$"[>$L=$$LCmmJ//============================================================================= // EFFECT_DRIVING_PITGARAGE //============================================================================ class EFFECT_DRIVING_PITGARAGE extends I3DL2Listener editinlinenew; _`t}-M $33?$= ?""" $(? ${n? $R^?" $" $o<$G=mmP//============================================================================= // EFFECT_DRIVING_INCAR_SPORTS //============================================================================ class EFFECT_DRIVING_INCAR_SPORTS extends I3DL2Listener editinlinenew; m)q3D) Gmb}")D GmcV.}9:)%l9:)%T-G {E wo*o [EfVo-G {F) $one $two $three $four $five $six 9R)$Fn~$%i%a~$%i$pp$a$a,wo*o [$ Gm~//============================================================================= // EFFECT_WOODEN_HALL //============================================================================ class EFFECT_WOODEN_HALL extends I3DL2Listener editinlinenew; aFf-M $̌?$L?"|"p${.> $@? $>" $ #<" $$$p F${CmmN//============================================================================= // EFFECT_DRIVING_INCAR_RACER //============================================================================ class EFFECT_DRIVING_INCAR_RACER extends I3DL2Listener editinlinenew; gGhw-M $̌?$L?"D""8${.> $@ $>"" $u<$$p F${CmmP//============================================================================= // EFFECT_DRIVING_INCAR_LUXURY //============================================================================ class EFFECT_DRIVING_INCAR_LUXURY extends I3DL2Listener editinlinenew; enjd-M"P"h"$? $> $Q?" $C=" $%=$E$33BmmUl H/a9 YDCY%YfUY10 GmmmmYmiJn-M $?""0"$> $> $>"8 $ #<", $ #<$$p F${CmmF//============================================================================= // EFFECT_WOODEN_CUPBOARD //============================================================================ class EFFECT_WOODEN_CUPBOARD extends I3DL2Listener editinlinenew; mT//============================================================================= // EFFECT_DRIVING_FULLGRANDSTAND //============================================================================ class EFFECT_DRIVING_FULLGRANDSTAND extends I3DL2Listener editinlinenew; ooqj-M"\"$)\? $> $h?" $D<" $B`<$E$33BmpKrs}0-M $A"""p$ף@@ $)\? $ ף?"| $Q="\ $9H=$"FmmT2 -\-% Gmpuv--T-%-%*-%-\ GmvmmmmtxN-S-%-\ GmymmmmH//============================================================================= // EFFECT_WOODEN_COURTYARD //============================================================================ class EFFECT_WOODEN_COURTYARD extends I3DL2Listener editinlinenew; zp{_`Q-M$ff&?"\"h"$? $33> $q=J?"D $%=" $o=$E$33BmmB//============================================================================= // EFFECT_WOODEN_ALCOVE //============================================================================ class EFFECT_WOODEN_ALCOVE extends I3DL2Listener editinlinenew; |q}f-M"""$(? $R? $h?" $D<" $<$E$33Bmm}//============================================================================= // EFFECT_Underwater //============================================================================= class EFFECT_Underwater extends I3DL2Listener editinlinenew; ~rm-M $ff?"` $="?"mm{//============================================================================= // EFFECT_Stoneroom //============================================================================= class EFFECT_Stoneroom extends I3DL2Listener editinlinenew; mRB%1do ywd*(d Rd$|QPONML!.w!*w.!* w!d-.! R!$|QPONML!! GmCmm!mmV//============================================================================= // EFFECT_DRIVING_EMPTYGRANDSTAND //============================================================================ class EFFECT_DRIVING_EMPTYGRANDSTAND extends I3DL2Listener editinlinenew; mFn-- GmGmmmmXI-- GmJmmmDLKwMS-M $A"D""8$ ד@ $? $33?" $Q=" $9H=$"FmmN//============================================================================= // EFFECT_DRIVING_COMMENTATOR //============================================================================ class EFFECT_DRIVING_COMMENTATOR extends I3DL2Listener editinlinenew; LNME-M $@@$"|" "$H@ $Ga? ${.?" $v="P $C<$?$m@sNJRD-M $9A"$ @ $ #?"9 $D<"S $C $=" $<" $X9<$}?5>$\B>$ff2E$AmmF//============================================================================= // EFFECT_DOME_SAINTPAULS //============================================================================ class EFFECT_DOME_SAINTPAULS extends I3DL2Listener editinlinenew; m{VJ1Gw*a/!Tw*w*r%q!zRW-`'-c(v!u! GmGmQuW?-M $@@$G?"|" "$!@ $Ga? ${.?" $k>" $%=$L>$mTUX ɲ)-M $33IB$R^?"|"$'A $\B> $="$ $Q=" $1,=$=$ff2E$AmmUt4/-`v! WtW{L??w*r%a/!y-m'?H9?&d-c- L>9?,t-c'F2.w2*rKzzqJyy2Dr9?q22}I22?Jw*n'un _ h`-m W{v!u!-`( Gms//============================================================================= // EFFECT_Dizzy //============================================================================= class EFFECT_Dizzy extends I3DL2Listener editinlinenew; ZV[g:$mm~//============================================================================= // EFFECT_CITY_SUBWAY //============================================================================ class EFFECT_CITY_SUBWAY extends I3DL2Listener editinlinenew; `aat-M $@@$p=?"""$ף@@ $p? $h?"D $j<=" $B`<$>$= W>$mmYihn aiiP.i^wP*P}P Gm@//============================================================================= // EFFECT_CITY_STREETS //============================================================================ class EFFECT_CITY_STREETS extends I3DL2Listener editinlinenew; cbdk -M $@@$G?"""$? $)\? $h?"\ $j<=" $B`<$L>$mmbjEw hjj Gm~//============================================================================= // EFFECT_CITY_MUSEUM //============================================================================ class EFFECT_CITY_MUSEUM extends I3DL2Listener editinlinenew; fcguh-M $B$Q?""$"$$Q@ $33? $?" $w=" $C =$>${.>$$ff2E$Bmm@//============================================================================= // EFFECT_CITY_LIBRARY //============================================================================ class EFFECT_CITY_LIBRARY extends I3DL2Listener editinlinenew; hdi52-M $B$Q?"""$ף0@ $ c? $>" $h<" $ ף<$>${.>$$ff2E$Bmmi2:r* {i.i nr* {h.h r* {gg r* {hh  Gmlk  G mmmmnmmommpmmqmmmmsk  G mtmmummvmmwmmxmmmmD//============================================================================= // EFFECT_CITY_ABANDONED //============================================================================ class EFFECT_CITY_ABANDONED extends I3DL2Listener editinlinenew; yez 㺉-M $@@$ף0?""8"$Q@ $•? $h?" $X94=" $<$L>$mmq//============================================================================= // EFFECT_City //============================================================================= class EFFECT_City extends I3DL2Listener editinlinenew; {f|giX-M$?" $+?""emmt//============================================================================= // EFFECT_CHAPEL //============================================================================ class EFFECT_CHAPEL extends I3DL2Listener editinlinenew; }g~($-M $̜A$= W?" $ ד@ $ #? $p?"D $o=" $9H=/$G=mmq//============================================================================= // EFFECT_Cave //============================================================================= class EFFECT_Cave extends I3DL2Listener editinlinenew; h@ CK-M $iA"$q=:@ $ff?" $u<" $X9" $X9<"$O >$ ף=$̈́E$ CmmJ//============================================================================= // EFFECT_SPORT_SQUASHCOURT //============================================================================ class EFFECT_SPORT_SQUASHCOURT extends I3DL2Listener editinlinenew; mN//============================================================================= // EFFECT_CASTLE_SHORTPASSAGE //============================================================================ class EFFECT_CASTLE_SHORTPASSAGE extends I3DL2Listener editinlinenew; D PE ν-M $A$ c?""0$z@ $R>"" $j<$O >$ ף=$̈́E$ CmmJ//============================================================================= // EFFECT_CASTLE_MEDIUMROOM //============================================================================ class EFFECT_CASTLE_MEDIUMROOM extends I3DL2Listener editinlinenew; F OG C|-M $A${n?""0$\@ $>" $X9<"8$R>$<$̈́E$ CmmL//============================================================================= // EFFECT_CASTLE_LONGPASSAGE //============================================================================ class EFFECT_CASTLE_LONGPASSAGE extends I3DL2Listener editinlinenew; H NI zQ-M $A$ c?""0$HZ@ $R>"8" $j<$O >$ ף=$̈́E$ CmmH//============================================================================= // EFFECT_CASTLE_LARGEROOM //============================================================================ class EFFECT_CASTLE_LARGEROOM extends I3DL2Listener editinlinenew; J MK  3$%-M $A$Q?""$!@ $?"| $C ="p $o<$p=>$)\=$̈́E$ Cmm~//============================================================================= // EFFECT_CASTLE_HALL //============================================================================ class EFFECT_CASTLE_HALL extends I3DL2Listener editinlinenew; C vM AK-M$@?"""8${@ $h? $z?"D"$%>$\B>$$3GE$33SCmmO mmP mmmmlSH/kG-E-(<e t(-E(hh-  6 R 6R?Q #?S5aCDQ9?, Q'RhwS*-(he t( GL LR  Jމ-M $A$)\O?""$$H@ $q=J? $R?" $B`e=" $<$̈́E$ CmmV//============================================================================= // EFFECT_SPORT_SMALLSWIMMINGPOOL //============================================================================ class EFFECT_SPORT_SMALLSWIMMINGPOOL extends I3DL2Listener editinlinenew; S xT it`-M $B$333?""8"$ף0@ $? $?"p $ ף<" $<$K7>$>4$e?/$\B>mmF//============================================================================= // EFFECT_CASTLE_CUPBOARD //============================================================================ class EFFECT_CASTLE_CUPBOARD extends I3DL2Listener editinlinenew; U KV a-M $A$ c?""0$+? $R^? $R>", $ #<", $B`;$O >$ ף=$̈́E$ CmmQ PEJ4*wPPuPq!5 GmH//============================================================================= // EFFECT_CASTLE_COURTYARD //============================================================================ class EFFECT_CASTLE_COURTYARD extends I3DL2Listener editinlinenew; mW Z VR: GmmmF//============================================================================= // EFFECT_SPORT_GYMNASIUM //============================================================================ class EFFECT_SPORT_GYMNASIUM extends I3DL2Listener editinlinenew; mB] +]iJr0*r0*/a9 0IHw0*I10Wr0**0 Gmmm\ _ h w* Gmmm^ a Ho^ w*  Gmmm` AQx lB+wB*? B AB b G[ {c  O-M$)\O?"P"D"$H@ $? $̬?" $h<"D $Q8=$>$)\>$$3GE$33SCmmBmX Je b-M $A$= >""D"|$Q@ $(? $k>" $B`="$ $t=$p>$mmb J~ ?%***b(C( GmJ//============================================================================= // EFFECT_SPORT_FULLSTADIUM //============================================================================ class EFFECT_SPORT_FULLSTADIUM extends I3DL2Listener editinlinenew; mB//============================================================================= // EFFECT_CASTLE_ALCOVE //============================================================================ class EFFECT_CASTLE_ALCOVE extends I3DL2Listener editinlinenew; g |i N $-M $ff@"""8$@ ${.> $L?"0 $@>" $=mmK 9:9:$9:9:$ &9?69? &9?69?66 6  Gh Ik ]+}f-M $A$ c?""0$? $R^? $R>"" $C =$O >$ ף=$̈́E$ Cmmmmj kxr*Fr*Fr* [9P ~6[K6[[ GmL//============================================================================= // EFFECT_SPORT_EMPTYSTADIUM //============================================================================ class EFFECT_SPORT_EMPTYSTADIUM extends I3DL2Listener editinlinenew; mq mm[mmG//============================================================================= // EFFECT_CarpetedHallway //============================================================================= class EFFECT_CarpetedHallway extends I3DL2Listener editinlinenew; o @s R-M $ff@""D"8$Q@ $\? $̌?" $Zd;>" $=mmT//============================================================================= // EFFECT_SPACESTATION_SMALLROOM //============================================================================ class EFFECT_SPACESTATION_SMALLROOM extends I3DL2Listener editinlinenew; mCdiCJDC0apppAIScript 9V  ActionNum 9S(DJC@DdCJD Gr Hv }cX-M $33?"`$> $=" $o;" $$>$AOE$Cmm{PB 3#r*9  ?r*7 Gm}//============================================================================= // EFFECT_Auditorium //============================================================================= class EFFECT_Auditorium extends I3DL2Listener editinlinenew; m~ mmmmX)YP5aQS*MM\* Gm GC:m XG* VG%Sr*D(7j CG G| FA y e-M $̬A"$$q=@ $= ?" $ ף<" $$L>$AOE$CmmJ Pv  GmL ;z ^( GmM j5!-\'-F( GmV//============================================================================= // EFFECT_SPACESTATION_MEDIUMROOM //============================================================================ class EFFECT_SPACESTATION_MEDIUMROOM extends I3DL2Listener editinlinenew; mwR , w% 3q!5 GO HQ ;-M $?$@?"p"$ף@@ $? $ ?" $C ="D $)\=$V>$R>$AOE$CmmP y  GmR z, GmBhUw*a GmT 7 Gm@U vM, v%* 3 GmX//============================================================================= // EFFECT_SPACESTATION_LONGPASSAGE //============================================================================ class EFFECT_SPACESTATION_LONGPASSAGE extends I3DL2Listener editinlinenew; m|V \ 52TEP-Jq!?/Fu! =mG@4mXu)[Xu[ GW IZ RI-M $33?$Q?"p"$ ד@ $R? $ ?" $D<" $<$k>$AOE$CmD E[ M9-M $B"E$@ $>"r $ ף<" $" $(\?"L"mmT//============================================================================= // EFFECT_SPACESTATION_LARGEROOM //============================================================================ class EFFECT_SPACESTATION_LARGEROOM extends I3DL2Listener editinlinenew; ` Ja X-M $ff?$)\O?"p"$x@ $\> $(?"P $B`e=" $)\=$n>$)\>$AOE$Cmmcclass Drowned extends DamageType abstract; static function class GetPawnDamageEffect( vector HitLocation, float Damage, vector Momentum, Pawn Victim, bool bLowDetail ) { return Default.PawnDamageEffect; } b rC3c -ΜpI]%o forgot to come up for air.e]%o forgot to come up for air.g]%o forgot to come up for air.mS@SbSj:1@C`C`Cmm7class Depressurized extends DamageType abstract; m2class CriticalEventPlus extends LocalMessage; m[#//============================================================================= // Counter: waits until it has been triggered 'NumToCount' times, and then // it sends Trigger/UnTrigger events to actors whose names match 'EventName'. //============================================================================= class Counter extends Triggers; #exec Texture Import File=Textures\Counter.pcx Name=S_Counter Mips=Off MASKED=1 //----------------------------------------------------------------------------- // Counter variables. var() byte NumToCount; // Number to count down from. var() bool bShowMessage; // Display count message? var() localized string CountMessage; // Human readable count message. var() localized string CompleteMessage; // Completion message. var byte OriginalNum; // Number to count at startup time. //----------------------------------------------------------------------------- // Counter functions. // // Init for play. // function BeginPlay() { OriginalNum = NumToCount; } /* Reset() reset actor to initial state - used when restarting level without reloading. */ function Reset() { NumToCount = OriginalNum; } // // Counter was triggered. // function Trigger( actor Other, pawn EventInstigator ) { local string S; local string Num; local int i; if( NumToCount > 0 ) { if( --NumToCount == 0 ) { // Trigger all matching actors. if( bShowMessage && (CompleteMessage != "") && (EventInstigator != None) ) EventInstigator.ClientMessage( CompleteMessage ); TriggerEvent(Event,Other,EventInstigator); } else if( bShowMessage && CountMessage != "" ) { // Still counting down. switch( NumToCount ) { case 1: Num="one"; break; case 2: Num="two"; break; case 3: Num="three"; break; case 4: Num="four"; break; case 5: Num="five"; break; case 6: Num="six"; break; default: Num=string(NumToCount); break; } S = CountMessage; while( InStr(S, "%i") >= 0 ) { i = InStr(S, "%i"); S = Left(S,i) $ Num $ Mid(S,i+2); } if ( EventInstigator != None ) EventInstigator.ClientMessage( S ); } } } m=qNB--C??C$ Gmg r,r=X??v!Uw*'v!w*'-tB9?% 9?& 9?%B GmJ//============================================================================= // EFFECT_SPACESTATION_HALL //============================================================================ class EFFECT_SPACESTATION_HALL extends I3DL2Listener editinlinenew; mh k AR_G@mqKIw*'q0?u! Gi Kl =+-M $33?$R^?"p"$@ $\> $(?"$ $=" $@=$>$AOE$Cmmmmj o {`{ G@mpYIw*'p0u! GmR//============================================================================= // EFFECT_SPACESTATION_CUPBOARD //============================================================================ class EFFECT_SPACESTATION_CUPBOARD extends I3DL2Listener editinlinenew; mmmn s Jn G@mog Lw*'o09?u! Gp Lt DP҉-M $33?$)\?""$q=J? $)\O? $ ?"" $t<$X9>$R>$AOE$Cmmmmr z K Gmnu `w*'n0K-CV?u! GmN//============================================================================= // EFFECT_SPACESTATION_ALCOVE //============================================================================ class EFFECT_SPACESTATION_ALCOVE extends I3DL2Listener editinlinenew; mmmw mN& `w*'m0K-C?Vu! Gx M{ ow-M $?$G?"""$z? $)\O? $ ?"," $t<$D>$= W>$AOE$Cmmmmv  LMG@m)6 <}sv!)}=9?a=( Gm~ ldw*'l0?}=a=(u!)u! GmD//============================================================================= // EFFECT_SMALLWATERROOM //============================================================================ class EFFECT_SMALLWATERROOM extends I3DL2Listener editinlinenew; mmm9Qa.9-'..9B.9  Gf d8@2C ؂uhhDE]Only %i more to go...Q= Completed!ZYd Smmdclass Corroded extends DamageType abstract; static function class GetPawnDamageEffect( vector HitLocation, float Damage, vector Momentum, Pawn Victim, bool bLowDetail ) { return Default.PawnDamageEffect; } @ NE Jw\-M $B$333?"P"F$G? $? $?" $ ף< $<$K7>$>4$e?/$\B>mD k@3F ΫpI]%o was dissolved by %k's.e]%o dissolved in slime.g]%o dissolved in slime.@Sj:1C/DfCmmH mmmm{//============================================================================= // EFFECT_Sewerpipe //============================================================================= class EFFECT_Sewerpipe extends I3DL2Listener editinlinenew; mmm` class CameraTextureClient extends Info placeable; var() ScriptedTexture DestTexture; var() name CameraTag; var() float RefreshRate; var() float FOV; var Actor CameraActor; // // PostBeginPlay // simulated function PostBeginPlay() { local Actor CameraActorIt; ForEach AllActors(class'Actor',CameraActorIt,CameraTag) { CameraActor = CameraActorIt; break; } if(DestTexture != None) { DestTexture.Client = Self; SetTimer(1.0 / RefreshRate,true); Enable('Timer'); } } // // Timer // simulated function Timer() { DestTexture.Revision++; } // // RenderTexture // simulated event RenderTexture(ScriptedTexture Tex) { if(CameraActor != None) Tex.DrawPortal(0,0,Tex.USize,Tex.VSize,CameraActor,CameraActor.Location,CameraActor.Rotation,FOV); } // // Default properties // mmK p<2 M ׿e]Oo~Oo~Oo~ʁ)ʁ)Oo~Oo~%$"#! |$pBk$pBIfmI ON .҉-M $?$L?"$ 3@ $)\>" $B`e<" $1" $o;"5 $D;mmdeW*-ge wd(Rewpd?quiet(' Gmsclass ACTION_Walk extends ScriptedAction; function bool InitActionFor(ScriptedController C) { C.Pawn.ShouldCrouch(false); C.Pawn.SetWalking(true); return false; } mmm Z ^ ]   Gm@m[ @{20_ ˑ.*h*h]walkSmmdclass ACTION_WaitForTimer extends LatentScriptedAction; var(Action) float PauseTime; function bool InitActionFor(ScriptedController C) { C.CurrentAction = self; C.SetTimer(PauseTime, false); return true; } function bool CompleteWhenTriggered() { return true; } function bool CompleteWhenTimer() { return true; } function string GetActionString() { return ActionString@PauseTime; } mbfnLrO* f!m/na0 Of>>10rO*pppNo Next script found for 9V in 9VnnO G` Fz20b (s8Er**MWait for timermmmma f f-J'' Gmu//============================================================================= // EFFECT_Quarry //============================================================================= class EFFECT_Quarry extends I3DL2Listener editinlinenew; mme Qg E-M $A"" $#y=" $ $Q8>", $C<" $u<$\=$)\>$$3GE$33SCmmmE ~u20K a.***]trigger eventmmN//============================================================================= // EFFECT_PREFAB_PRACTISEROOM //============================================================================ class EFFECT_PREFAB_PRACTISEROOM extends I3DL2Listener editinlinenew; mPclass ACTION_ThrowWeapon extends ScriptedAction; var(Action) vector WeaponVelocity; function bool InitActionFor(ScriptedController C) { if ( (C.Pawn == None) || (C.Pawn.Weapon == None) ) return false; if ( WeaponVelocity == vect(0,0,0) ) WeaponVelocity = C.Pawn.Velocity + vect(0,0,250) + 300 * vector(C.Pawn.Rotation); C.Pawn.TossWeapon(WeaponVelocity); return false; } mdb zlbQ-^bildvuuwl*l[dv( GM wt20 O >H.**h*h*h*h] throw weaponmmlmm N R  d Gm@mmK/.klD/U%//T/Ui/&/T GmB class ACTION_TeleportToPoint extends LatentScriptedAction; var(Action) name DestinationTag; // tag of destination - if none, then use the ScriptedSequence var(Action) bool bPlaySpawnEffect; var Actor Dest; function bool InitActionFor(ScriptedController C) { local Pawn P; Dest = C.SequenceScript.GetMoveTarget(); if ( DestinationTag != '' ) { ForEach C.AllActors(class'Actor',Dest,DestinationTag) break; } P = C.GetInstigator(); P.SetLocation(Dest.Location); P.SetRotation(Dest.Rotation); P.OldRotYaw = P.Rotation.Yaw; if ( bPlaySpawnEffect ) P.PlayTeleportEffect(false,true); return false; } mjS V c@' GmmmwdFwapAction (x]w@x GT ] s20 X \08Er*7z**hʁ)hʁ)hhhmL XY I-M ${?$R^?""$)\? $)\? $Q8>" $ #<"8$\=$)\>$$3GE$33SCmmsclass ACTION_StopShooting extends ScriptedAction; function bool InitActionFor(ScriptedController C) { C.bShootTarget = false; C.bShootSpray = false; return false; } Z sr20[ ".**mmF//============================================================================= // EFFECT_PREFAB_OUTHOUSE //============================================================================ class EFFECT_PREFAB_OUTHOUSE extends I3DL2Listener editinlinenew; mmmYclass ACTION_StopAnimation extends ScriptedAction; function bool InitActionFor(ScriptedController C) { C.ClearAnimation(); return false; } mm\ Y` g-M $B$Q?"""$ף? $\> $33>" $<" $X94=$=${.>$$ff2E$Bmmb mmmmD//============================================================================= // EFFECT_PREFAB_CARAVAN //============================================================================ class EFFECT_PREFAB_CARAVAN extends I3DL2Listener editinlinenew; mmc _e Y-M $A""$(> $?" $D<" $D ActorClass; var(Action) vector LocationOffset; var(Action) rotator RotationOffset; var(Action) bool bOffsetFromScriptedPawn; var(Action) name ActorTag; function bool InitActionFor(ScriptedController C) { local vector loc; local rotator rot; local actor a; if ( bOffsetFromScriptedPawn ) { loc = C.Pawn.Location + LocationOffset; rot = C.Pawn.Rotation + RotationOffset; } else { loc = C.SequenceScript.Location + LocationOffset; rot = C.SequenceScript.Rotation + RotationOffset; } a = C.Spawn(ActorClass,,,loc,rot); a.Instigator = C.Pawn; if ( ActorTag != 'None' ) a.Tag = ActorTag; return false; } function string GetActionString() { return ActionString@ActorClass; } mmo np20q em .*h*h*7z*7z*ʁ)*ʁ)] Spawn actormmB//============================================================================= // EFFECT_PIPE_RESONANT //============================================================================ class EFFECT_PIPE_RESONANT extends I3DL2Listener editinlinenew; mmr At -M $ff?$h?"P"D"$@ $Q8> $=" $ #<"D $X9<$ff2E$Ammmmclass ACTION_ShootTarget extends ScriptedAction; var(Action) int NumShots; var(Action) name FiringMode; var(Action) bool bSpray; function bool InitActionFor(ScriptedController C) { C.NumShots = NumShots; C.FiringMode = FiringMode; C.bShootTarget = true; C.bShootSpray = bSpray; return false; } v `o20w v|.****] shoot targetmm#y  ' Gmz mmmm x |  9U Gm@mmX{ ~ F3' GmmmW} _]M _ _ &T6 6&6 6&-@'6 6&6 6&-A'6 6&6 6&-B'_  H-@-A-B(' GmD class ACTION_SetViewTarget extends ScriptedAction; var(Action) name ViewTargetTag; var Actor ViewTarget; function bool InitActionFor(ScriptedController C) { if ( ViewTargetTag == 'Enemy' ) C.ScriptedFocus = C.Enemy; else if ( ViewTargetTag == '' ) C.ScriptedFocus = None; else { if ( (ViewTarget == None) && (ViewTargetTag != 'None') ) ForEach C.AllActors(class'Actor',ViewTarget,ViewTargetTag) break; if ( ViewTarget == None ) C.bBroken = true; C.ScriptedFocus = ViewTarget; } return false; } function String GetActionString() { return ActionString@ViewTarget@ViewTargetTag; } mB//============================================================================= // EFFECT_PIPE_LONGTHIN //============================================================================ class EFFECT_PIPE_LONGTHIN extends I3DL2Listener editinlinenew; m@m@ [n20C U.******Mset viewtargetSmmoclass ACTION_SetPhysics extends ScriptedAction; var(Action) Actor.EPhysics NewPhysicsMode; function bool InitActionFor(ScriptedController C) { C.GetInstigator().SetPhysics(NewPhysicsMode); return false; } function string GetActionString() { return ActionString@NewPhysicsMode; } D Tm20E .*h]change physics to mm@ class ACTION_SetHidden extends ScriptedAction; var(Action) bool bHidden; var(Action) name HideActorTag; var Array Target; event PostBeginPlay( ScriptedSequence SS ) { local Actor A; if ( HideActorTag != '' ) { ForEach SS.AllActors(class'Actor', A, HideActorTag) Target[Target.Length] = A; } } function bool InitActionFor(ScriptedController C) { local int i; if ( Target.Length > 0 ) { For (i=0; ilr]w>*>-(>>o$>' GF Ll20J {.Ƀʁ)*h7zmmmm}M B[' Gmmm^L S& S+ GA lO -M $?$h?"P"D"$)\A $Q8> $=" $ #<" $X9<$ff2E$Ammmmclass ACTION_SetCorona extends ScriptedAction; var(Action) bool bCorona; var(Action) name HideActorTag; function bool InitActionFor(ScriptedController C) { local Actor A; if ( HideActorTag != '' ) { ForEach C.AllActors(class'Actor',A,HideActorTag) A.bCorona = bCorona; } return false; } Q Fk20R .*ʁ)mm}gT B' Gmmm^S C& "w*C :ag!m/Ca0 g``10w.*.: GmFclass ACTION_SetAlertness extends ScriptedAction; enum EAlertnessType { ALERTNESS_IgnoreAll, // ignore any damage, etc. (even the physics part) ALERTNESS_IgnoreEnemies, // react normally, but don't try to fight or anything ALERTNESS_StayOnScript, // stay on script, but fight when possible ALERTNESS_LeaveScriptForCombat // leave script when acquire enemy }; var(Action) EAlertnessType Alertness; function bool InitActionFor(ScriptedController C) { C.SetEnemyReaction(int(Alertness)); return false; } function string GetActionString() { local String S; Switch(Alertness) { case ALERTNESS_IgnoreAll: S="Ignore all"; break; case ALERTNESS_IgnoreEnemies: S="Ignore enemies"; break; case ALERTNESS_StayOnScript: S="Stay on script"; break; case ALERTNESS_LeaveScriptForCombat: S="Leave script for combat"; break; } return ActionString@S; } mmm U Y  9Wg Gm@mV Aj20Z @`.*]set alertnessSmm|//============================================================================= // EFFECT_PIPE_LARGE //============================================================================ class EFFECT_PIPE_LARGE extends I3DL2Listener editinlinenew; msclass ACTION_Run extends ScriptedAction; function bool InitActionFor(ScriptedController C) { C.Pawn.ShouldCrouch(false); C.Pawn.SetWalking(false); return false; } m#Hp Mp :PH!m/pa0 MHOO10-p-a M -a+M -9?6- -R-~('( G\ yi20^ Pa.*h*h]RunSmm-mmAclass ACTION_PlaySound extends ScriptedAction; var(Action) sound Sound; var(Action) float Volume; var(Action) float Pitch; var(Action) bool bAttenuate; function bool InitActionFor(ScriptedController C) { // play appropriate sound if ( Sound != None ) C.GetSoundSource().PlaySound(Sound,SLOT_Interact,Volume,true,,Pitch,bAttenuate); return false; } function string GetActionString() { return ActionString@Sound; } m#yv3yy+y' G` wh20b zN.*ʁ)n$?f$?t= play soundmmmm~a e A ' Gmmm^d Q&5Q+ G[ mg -M $33IB"|"$33A $= $=" $j<=" $o=$ff2E$Ammmm}//============================================================================= // EFFECT_Parkinglot //============================================================================= class EFFECT_Parkinglot extends I3DL2Listener editinlinenew; m[POXPO Gi nk ݌X-M $A"$33? $?" $o<" $D 0) ) C.Pawn.LoopAnim(BaseAnim,AnimRate); else return false; if( StartFrame > 0.0 ) C.Pawn.SetAnimFrame( StartFrame, 0, 1); return true; } function string GetActionString() { return ActionString@BaseAnim; } mmmUw { S1 I GmmmYz } ak' GmmmW class ACTION_PlayAmbientSound extends ScriptedAction; var(Action) sound AmbientSound; var(Action) byte SoundVolume; var(Action) byte SoundPitch; var(Action) float SoundRadius; function bool InitActionFor(ScriptedController C) { // play appropriate sound if ( AmbientSound != None ) { C.SequenceScript.AmbientSound = AmbientSound; C.SequenceScript.SoundVolume = SoundVolume; C.SequenceScript.SoundPitch = SoundPitch; C.SequenceScript.SoundRadius = SoundRadius; } return false; } function string GetActionString() { return ActionString@AmbientSound; } m#JK'KK aJ(' G~ ]e20 @)\.*7z*7z*7z*7zVW@Y$B]play ambient soundmmmm| CH ' GmmmZBE\D' Gmmm DG~ 9UJ Gm@mm@ class ACTION_MoveToPoint extends LatentScriptedAction; var(Action) name DestinationTag; // tag of destination - if none, then use the ScriptedSequence var Actor Movetarget; function bool MoveToGoal() { return true; } function Actor GetMoveTargetFor(ScriptedController C) { if ( Movetarget != None ) return MoveTarget; MoveTarget = C.SequenceScript.GetMoveTarget(); if ( DestinationTag != '' ) { ForEach C.AllActors(class'Actor',MoveTarget,DestinationTag) break; } if ( AIScript(MoveTarget) != None ) MoveTarget = AIScript(MoveTarget).GetMoveTarget(); return MoveTarget; } function string GetActionString() { return ActionString@DestinationTag; } HX d20I;8Er*7z*a]Move to pointSmmM  5r *r *(=-M a/!w *m  m  9?99   R m: @% $p v% $-N @& $ v& $ -Z-M-N( GmHclass ACTION_MoveToPlayer extends LatentScriptedAction; function bool MoveToGoal() { return true; } function Actor GetMoveTargetFor(ScriptedController C) { return C.GetMyPlayer(); } mmmKN c20MV̝ 8Er*MMove to playerSmmMclass ACTION_LocalizedMessage extends ScriptedAction; var(Action) class MessageClass; var(Action) int MessageNum; function bool InitActionFor(ScriptedController C) { C.BroadcastLocalizedMessage( MessageClass, MessageNum, None, None, None ); return false; } function string GetActionString() { return ActionString@MessageClass.static.GetString(MessageNum); } NTb20Otcפ.ɈF*`]Localized Messagemm}//============================================================================= // EFFECT_PaddedCell //============================================================================= class EFFECT_PaddedCell extends I3DL2Listener editinlinenew; mQ S :PQ!m/a0 SQOO10Na(((-(a S a+S o$( GmGclass ACTION_LeaveSequence extends ScriptedAction; function ScriptedSequence GetScript(ScriptedSequence S) { return None; } mmRLa20TK.Mleave sequencemPoU$*-M $33?"${.> $="L $o:" $o;mmRmclass ACTION_KillInstigator extends ScriptedAction; var() class DamageType; function bool InitActionFor(ScriptedController C) { C.GetInstigator().Died( None, DamageType, C.Instigator.Location ); return false; } function string GetActionString() { return ActionString@DamageType; } mF//============================================================================= // EFFECT_OUTDOORS_VALLEY //============================================================================ class EFFECT_OUTDOORS_VALLEY extends I3DL2Listener editinlinenew; X`Y2-M $B$)\>"""$Q8@ $> $33>" $y&>" $=${>$$ff2E$BmWJz20ZZE.*h*hY]Damage instigatormmT//============================================================================= // EFFECT_OUTDOORS_ROLLINGPLAINS //============================================================================ class EFFECT_OUTDOORS_ROLLINGPLAINS extends I3DL2Listener editinlinenew; m` class ACTION_Jump extends ScriptedAction; enum JumpType { JUMP_Normal, JUMP_Double, JUMP_DodgeLeft, JUMP_DodgeRight }; var(Action) JumpType JumpAction; function bool InitActionFor(ScriptedController C) { if ( C.Pawn == None ) return false; C.Pawn.SetPhysics(PHYS_Walking); Switch( JumpAction ) { case JUMP_Normal: C.Pawn.DoJump(false); break; case JUMP_Double: C.Pawn.DoJump(false); C.bPendingDoubleJump = true; C.bNotifyApex = true; break; case JUMP_DodgeLeft: C.Pawn.Dodge(DCLICK_Left); break; case JUMP_DodgeLeft: C.Pawn.Dodge(DCLICK_Right); break; } return false; } mm[q^{-M $B$"""p$Q@ $= W> $>"0 $>"$ $㥛<$?$xE$frCm\C_20_VtF.**h*h*h***h*h]JumpmmN//============================================================================= // EFFECT_OUTDOORS_DEEPCANYON //============================================================================ class EFFECT_OUTDOORS_DEEPCANYON extends I3DL2Listener editinlinenew; mWclass ACTION_IfRandomPct extends ScriptedAction; var(Action) float Probability; function ProceedToNextAction(ScriptedController C) { C.ActionNum += 1; if ( FRand() > Probability ) ProceedToSectionEnd(C); } function bool StartsSection() { return true; } `rb -M $B$p=?""$"p$x@ $= W> $>"0 $ˡE>" $㥛<$?$xE$frCmmmm He1S 9WT Gm@mmJFpF' GmD//============================================================================= // EFFECT_OUTDOORS_CREEK //============================================================================ class EFFECT_OUTDOORS_CREEK extends I3DL2Listener editinlinenew; mmmIfE_ E Ggsj$]-M $B$33>""$"$Q@ $= W> $>"\ $=" $<$d;_>${>$xE$frCmmHiZDHb]wZ*Z-(ZZo$' Ga^20lLxz.*mmnmmmma class ACTION_IfCondition extends ScriptedAction; var(Action) name TriggeredConditionTag; var TriggeredCondition T; function ProceedToNextAction(ScriptedController C) { if ( (T == None) && (TriggeredConditionTag != 'None') ) ForEach C.AllActors(class'TriggeredCondition',T,TriggeredConditionTag) break; C.ActionNum += 1; if ( T == None ) { if ( C.Level.Title ~= "Robot Factory" ) { ProceedToSectionEnd(C); return; } warn("No TriggeredCondition with tag "$TriggeredConditionTag$" found, breaking "$C.SequenceScript); ProceedToSectionEnd(C); return; } if ( !T.bEnabled ) ProceedToSectionEnd(C); } function bool StartsSection() { return true; } function string GetActionString() { return ActionString@T@TriggeredConditionTag; } mKVD.D%V GmJ//============================================================================= // EFFECT_OUTDOORS_BACKYARD //============================================================================ class EFFECT_OUTDOORS_BACKYARD extends I3DL2Listener editinlinenew; m ps  9SV Gm@moz]20t?.***3}*' uJ] If conditionmmEclass ACTION_GotoAction extends ScriptedAction; var(Action) int ActionNumber; function ProceedToNextAction(ScriptedController C) { C.ActionNum = Max(0,ActionNumber); } function string GetActionString() { return ActionString@ActionNumber; } mKel.?rR* e!m/la0 'Re>>10l&rR*|lRobot FactoryNl pppNo TriggeredCondition with tag 9We found, breaking 9Vl Nl R-%Nl Gur\20wW .*] go to actionmm`vyJ' Gmmm x{# 9VR9We Gm@mqy|绉-M $B$ff>""P"$)\? ${> $>" $9H=" $j<$d;_>${>$xE$frCmmKCW.+W&(CNW Gm\class ACTION_FreezeOnAnimEnd extends Action_PLAYANIM; function bool InitActionFor(ScriptedController C) { C.CurrentAnimation = self; return true; } function SetCurrentAnimationFor(ScriptedController C) { C.CurrentAnimation = self; } function bool PawnPlayBaseAnim(ScriptedController C, bool bFirstPlay) { if ( C.Pawn != None ) { C.Pawn.bPhysicsAnimUpdate = false; C.Pawn.StopAnimating(); C.Pawn.SetPhysics(PHYS_None); } return true; } m`}@J' GmmmE//============================================================================= // EFFECT_None: Plain room effect. //============================================================================= class EFFECT_None extends I3DL2Listener editinlinenew; AzB-M $?$""$=" $" $|S}S~SS@SASmmAr*(o$A U$r( $r(-E'-' $s$ $s$ ( G4~kZ20 D)_4=**h*h*h**mmmm_class ACTION_Freeze extends LatentScriptedAction; function bool InitActionFor(ScriptedController C) { if ( C.Pawn != None ) { C.Pawn.bPhysicsAnimUpdate = false; C.Pawn.StopAnimating(); C.Pawn.SetPhysics(PHYS_None); } C.CurrentAction = self; return true; } mXY;Y#u*XY ( GFI Y20 H8Er**h*h*h*]Freezemmmm GK  9VX Gm@mmbMLs* GmNmmmm@ class ACTION_ForceMoveToPoint extends ScriptedAction; var(Action) name DestinationTag; // tag of destination - if none, then use the ScriptedSequence var Actor Dest; var byte originalPhys; function bool InitActionFor(ScriptedController C) { Dest = C.SequenceScript.GetMoveTarget(); if ( DestinationTag != '' ) { ForEach C.AllActors(class'Actor',Dest,DestinationTag) break; } originalPhys = C.Pawn.Physics; C.Pawn.SetCollision(False, False, False); C.Pawn.bCollideWorld = false; //Log("SetLocation:"$Dest.Location); C.Pawn.SetLocation(Dest.Location); //Log("NewLocation:"$C.Pawn.Location); //Log("SetRotation:"$Dest.Rotation); C.Pawn.SetRotation(Dest.Rotation); C.Pawn.SetPhysics(PHYS_None); return false; } OQX20Pei.*7z**h*h*h*hʁ)*hʁ)*hmm[@!@^[\***( Gm{//============================================================================= // EFFECT_Mountains //============================================================================= class EFFECT_Mountains extends I3DL2Listener editinlinenew; mmm QUG [ {\ Gm@mmt class ACTION_FireWeapon extends ScriptedAction; var(Action) bool bPressFire; var(Action) bool bPressAltFire; function bool InitActionFor(ScriptedController C) { local vector ShootLoc; if ( (C.Pawn == None) || (C.Pawn.Weapon == None) ) return false; if ( bPressFire ) { if ( C.Pawn.Weapon.IsA('BallLauncher') ) { if ( C.Target != None ) ShootLoc = C.Target.Location; else ShootLoc = C.Pawn.Location + 1500 * vector(C.Pawn.Rotation); C.Pawn.Weapon.ShootHoop(C,ShootLoc); } else { C.Pawn.Weapon.StartFire(0); C.bFire = 1; } } else { C.Pawn.Weapon.StopFire(0); C.bFire = 0; } if ( bPressAltFire ) { C.Pawn.Weapon.StartFire(1); C.bAltFire = 1; } else { C.Pawn.Weapon.StopFire(1); C.bAltFire = 0; } C.bFineWeaponControl = bPressFire || bPressAltFire; return false; } R{Wf-M $B$q=>"< $= W>"$ $>"e $=mm~//============================================================================= // EFFECT_MOOD_MEMORY //============================================================================ class EFFECT_MOOD_MEMORY extends I3DL2Listener editinlinenew; X@YX-M $A$Y?"p"|$@ $Q? $)\?" $" $4$!>/$ff>$mmzI wz*I zI I ~I }( GVJW20#[gI\ .**h*hqY**ʁ)*h*h*hqY*hqY**hqY**hqY**hqY**] fire weaponmmmm Z^. 9Vz Gm@mmqclass ACTION_FinishRotation extends LatentScriptedAction; function bool TurnToGoal() { return true; } m^| 4/| a9 _._ A^10( Gmz//============================================================================= // EFFECT_MOOD_HELL //============================================================================ class EFFECT_MOOD_HELL extends I3DL2Listener editinlinenew; m_m_G V20cš8Er]Finish rotationmm `eV 9V^ Gm@mmTclass ACTION_FadeView extends LatentScriptedAction; var(Action) float FadeTime; var(Action) vector TargetFlash; function bool InitActionFor(ScriptedController C) { return true; } function string GetActionString() { return ActionString@FadeTime; } function bool TickedAction() { return true; } function bool StillTicking(ScriptedController C, float DeltaTime) { local bool bXDone,bYDone,bZDone; local vector V; V = C.GetInstigator().PhysicsVolume.ViewFlash - (C.Instigator.PhysicsVolume.Default.ViewFlash - TargetFlash) * (DeltaTime/FadeTime); if( V.X < TargetFlash.X ) { V.X = TargetFlash.X; bXDone = True; } if( V.Y < TargetFlash.Y ) { V.Y = TargetFlash.Y; bYDone = True; } if( V.Z < TargetFlash.Z ) { V.Z = TargetFlash.Z; bZDone = True; } C.GetInstigator().PhysicsVolume.ViewFlash = V; if(bXDone && bYDone && bZDone) return false; return true; } f T20 gH8Er*hbQ *hbQ *hbQ e$@D:1] fade viewmaGh{-M $B$?"|"D$zd@ $H> $@" $ ף<"d $<$G=$ #=4$@/$?$ Cmmd }-{1dzw1*c1a/!l.1ob11&D.drD*(Dob( GmTclass ACTION_EndSection extends ScriptedAction; function ProceedToNextAction(ScriptedController C) { if ( C.IterationCounter > 0 ) { C.ActionNum = C.IterationSectionStart; C.IterationCounter--; } else { C.ActionNum += 1; C.IterationSectionStart = -1; } } function bool EndsSection() { return true; } mDmjU S20l}Ì.******] end sectionmmVclass ACTION_DisplayMessage extends ScriptedAction; var(Action) localized string Message; var(Action) bool bBroadcast; var(Action) name MessageType; function bool InitActionFor(ScriptedController C) { local Pawn P; P = C.GetInstigator(); if ( bBroadCast ) C.Level.Game.Broadcast(P, Message, MessageType); // Broadcast message to all players. else if ( P != None ) P.ClientMessage( Message, MessageType ); return false; } function string GetActionString() { return ActionString@Message; } m io!  Gm@mmQ R20pߝ.**3}ZshjR]display messagemm~//============================================================================= // EFFECT_MOOD_HEAVEN //============================================================================ class EFFECT_MOOD_HEAVEN extends I3DL2Listener editinlinenew; qIrS-M $̜A$ףp?"8"D$G@ $)\? $)\?"2 $ ף<"8 $h<$ ף=4$|/@/$L=$mm}//============================================================================= // EFFECT_Livingroom //============================================================================= class EFFECT_Livingroom extends I3DL2Listener editinlinenew; mFw ?:wF*wHaF$z' y-x( GsMu˦-M $ @"$? $=" $D;" $o;mmmm tx 9VF Gm@mmec7eC(eb(( GmRclass ACTION_DestroyPawn extends ScriptedAction; function bool InitActionFor(ScriptedController C) { C.DestroyPawn(); return true; } mmmN//============================================================================= // EFFECT_ICEPALACE_SMALLROOM //============================================================================ class EFFECT_ICEPALACE_SMALLROOM extends I3DL2Listener editinlinenew; zH Q20}Z1 .*] destroy pawnSmmguu V9:g( G|NU-M $,@$= W?" "$G? $ ? $q=>" $ #<"|$'>$)\>$$2BF$33Bmmmm ~BRg !$@Ignore all ?$@Ignore enemies ]$@Stay on script $@Leave script for combat  @ Gm@@mmhclass ACTION_DestroyActor extends ScriptedAction; var(Action) name DestroyTag; function bool InitActionFor(ScriptedController C) { local Actor a; if(DestroyTag != 'None') { ForEach C.AllActors(class'Actor', a, DestroyTag) { a.Destroy(); } } return false; } mT//============================================================================= // EFFECT_ICEPALACE_SHORTPASSAGE //============================================================================ class EFFECT_ICEPALACE_SHORTPASSAGE extends I3DL2Listener editinlinenew; CB P20E~.*ʁ)]Destroy actormmts JEh!m/sa0 ihDi--t10( GDOG$1I-M $,@$@?" "$? $H? $)\>" $ #<"D $㥛<$}?5>$Q=$$2BF$33Bmmimmvclass ACTION_DamageInstigator extends ScriptedAction; var(Action) int Damage; var(Action) class DamageType; function bool InitActionFor(ScriptedController C) { local pawn Damaged; Damaged = C.GetInstigator(); Damaged.TakeDamage( Damage, Damaged, Damaged.Location, vect(0,0,0), DamageType); return false; } function string GetActionString() { return ActionString@(string(DamageType))@Damage; } I O20JI#Y2.*hhm" Y]Damage instigatormmYclass ACTION_Crouch extends ScriptedAction; function bool InitActionFor(ScriptedController C) { C.Pawn.ShouldCrouch(true); return false; } mDOqL7c%k%Ik7ckc--kklO--k( GKv N20M .*h]crouchSmmkmmZ // ==================================================================== // Class: GamePlay.Action_ConsoleCommand // Parent: GamePlay.ScriptedAction // // Executes a console command // ==================================================================== class Action_ConsoleCommand extends ScriptedAction; var(Action) string CommandStr; // The console command to execute function bool InitActionFor(ScriptedController C) { if (CommandStr!="") C.ConsoleCommand(CommandStr); return false; } function string GetActionString() { return ActionString@CommandStr; } Ot M20P.*]console commandmmcr roc( GmP//============================================================================= // EFFECT_ICEPALACE_MEDIUMROOM //============================================================================ class EFFECT_ICEPALACE_MEDIUMROOM extends I3DL2Listener editinlinenew; mmm QU  9Rc Gm@mmJclass ACTION_ChangeWeapon extends ScriptedAction; var(Action) class NewWeapon; function bool InitActionFor(ScriptedController C) { C.Pawn.PendingWeapon = Weapon(C.Pawn.FindInventoryType(newWeapon)); C.Pawn.ChangedWeapon(); return false; } Vm L20WR.*h*h*hmm5(/5!t((Q5!m(*r7* 5!m/(a0 7510r7*(-J'(7( GmEclass ACTION_ChangeTeam extends ScriptedAction; var(Action) int Team; function bool InitActionFor(ScriptedController C) { local PlayerReplicationInfo P; if (C.PlayerReplicationInfo==None) { P = c.spawn(class'PlayerReplicationInfo',C,,C.Pawn.Location, C.Pawn.Rotation); if (P==None) return false; C.PlayerReplicationInfo = P; C.Pawn.PlayerReplicationInfo=P; P = None; } C.bIsPlayer=true; C.Level.Game.GameReplicationInfo.Teams[Team].AddToTeam(c); return false; } mmm X\L 9V79W5 Gm@mRR][gd-M $,@$R^?" "D${@ $ ? $ ף>" $w="P $/<$v>>$=$$2BF$33BmmR//============================================================================= // EFFECT_ICEPALACE_LONGPASSAGE //============================================================================ class EFFECT_ICEPALACE_LONGPASSAGE extends I3DL2Listener editinlinenew; ^S_U-M $,@$E?" "$ף@@ $H? $)\>"8 $D<" $<$v>>$ #=$$2BF$33BmmqG TG.qGVpG-:'G-<-o( GYh K20a5f_.***h*h**h**3}Zs- =1J] Change Teammmmmtclass ACTION_ChangeScript extends ScriptedAction; var(Action) name NextScriptTag; var ScriptedSequence NextScript; function ScriptedSequence GetScript(ScriptedSequence S) { if ( (NextScript == None) && (NextScriptTag != 'None') ) { ForEach S.AllActors(class'ScriptedSequence', NextScript, NextScriptTag ) break; if ( NextScript == None ) { Warn("No Next script found for "$self$" in "$S); return S; } } return NextScript; } function bool InitActionFor(ScriptedController C) { C.bBroken = true; return true; } cd J20dϪB.*7z]Change scriptSmm{class ACTION_ChangeLevel extends ScriptedAction; var(Action) string URL; var(Action) bool bShowLoadingMessage; function bool InitActionFor(ScriptedController C) { if( bShowLoadingMessage ) C.Level.ServerTravel(URL, false); else C.Level.ServerTravel(URL$"?quiet", false); return true; } function string GetActionString() { return ActionString; } mN//============================================================================= // EFFECT_ICEPALACE_LARGEROOM //============================================================================ class EFFECT_ICEPALACE_LARGEROOM extends I3DL2Listener editinlinenew; e] H20g,.*3}*3}] Change levelmm^*kU-ns* ]qa<* Ys*  ]qa<*  Yh*a^ sqh*a!mha( Gm3class ActionMessage_DOM extends ActionMessage; msmiG2kl%%$"#! ]Double DominationControl points : A & BHold points for 10 secondsTouch point to take control Good luck!mm2class ActionMessage_DM extends ActionMessage; lF2mO㿻%%$"#! = DeathmatchPress fire to spawnWeapons have two firing modesRegular and alternate fireAssault RifleFires bullets and grenades Shield Gun Melee attackProtective Shield Explore to find other weapons Flak Cannon Bio-Rifle Minigun MovementWASD = Default movement keysDouble tap a key to dodge Jumping  Double jump  Powerups Health vials  Health packBig Keg O' HealthArmor  Shield PackSuper Shield Pack Adrenaline#"Adrenaline can be used for combosDamage AmplifierReach the frag limit first!Suicides count against you Good luck!mm ho" 9V^ Gm@mmmmm7( GfTq!(-M $9@$)\O?" "D$H@ $ ? $ ף>"P $w=" $/<$"[>$G=$$2BF$33Bmmmmsl's-:(s-<(( Gm3class ActionMessage_CTF extends ActionMessage; mmtE2vx%%$"#! ]Capture the FlagTwo bases : red and blueTouch enemy flag to take itReturn to your baseTouch your flag to score"!Translocating will drop the flagDefault capture limit is 3 Good luck!mmKA5rA*rA*(K#KA #zC9?,99A A }K( Gm2class ActionMessage_BR extends ActionMessage; mmxD2zn%%$"#! ] Bombing RunThe ball is in the centerTouch the ball to pick it up The ball carrier cannot attackPrimary fire shoots ball"!Alternate fire targets teammatesPass the ball to teammatesEach team has a round goalThrowing the ball = 3 points Carrying it = 7 points Good luck!mmcM6M(fcM M( GmBclass ActionMessage extends CriticalEventPlus; var localized string Messages[32]; static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { return Default.Messages[Switch]; } mmm {) 9Wc Gm@mmld7lC(lb'( GmD//============================================================================= // EFFECT_ICEPALACE_HALL //============================================================================ class EFFECT_ICEPALACE_HALL extends I3DL2Listener editinlinenew; mmm mmGmmCDE / DC9?,DC G mL// ==================================================================== // Class: GamePlay.ActionMessage_SubTitle // Parent: GamePlay.ActionMessage // // // ==================================================================== class ActionMessage_SubTitle extends ActionMessage; var localized float Delays[32]; static function float GetLifeTime(int Switch) { if (default.Delays[switch]==0.0) return default.LifeTime; else return default.Delays[Switch]; } mmFED 2H%%$"#! C $@C @C AC AC AC AC AC AC AC AC AC AC AC AC AC AC AC AC AC AC AC AMHow do I look?Not as good as me baby...ݤbWell fans here we are for another edition of the bloodiest sport in the Galaxy. A tournament where the winners become gods and the losers pay the ultimate price![YTHERE THEY ARE! Once they were rivals, but now they're one of the fiercest teams around.fdThat's right. Nothing beats experience and each one of these three brings loads of it to the table.SQLook at Malcolm! Now there's a guy who can really keep his cool in a fire-fight.^\That Brock. He's as dangerous to the ladies OUT-side the ring as he is to his foes IN-side!CAI love watching Lauren. She's such a little....bundle of energy.98Yeah right.....you like watching Lauren for her energy. This time he's MINE!! AAGGGHHHHRRRRE CYou d'man Gorge! You rock! Yeah baby, com'on, now, you d'man dude! MAAAALLLCOOOOOMMM! Oh, man, did you see that?CAI tell you Jim, that Gorge, he just has no respect for his fans.mkWell, I think he is still pissed about that new scar on his face, courtesy of Malcolm in their last match.21Yea, I think he is looking for a little PAYBACK.'&Yep, it should be a good one tonight.TRSince Malcolm's team are the reigning champs, they get to choose tonight's arena.10Looks like it's gonna be... Kalendra Icefields.>=Awww Yeah, I love this arena, Malcolm does really well here..-Tonight's match oughta be a real blood-bath.mm@{  1 )   )) 1  9 ) 1 ) )1 9 J9 ))1))))Z9)1)1) 9)A)9))1 11J)91J)11)9111191)J119)J199s b)99)J9Z1999J9A9)Z1J9 A99b19A1JAs1AAAJA)ZAJAAbAZA1JJZA)bAJJ1bA)sAJJAbJ1JJJsARJAJRAAbRsJRRRbR)ZRA1AsRbRAsR jR9RZZJAZZZRRsZ)R)bb9sb RbbRbbbbsb9jbRAZb)bsj9b9jjZZjjjjZsjjjAj1jsssZZssjj1s1ssssJ{sjsZsJsjssZj {{js1ssJ{{{sAZjs1s1jZss)9A{RŃs̓Js)sRŔ sՔRŔRŜZJs՜Jͬ)ZAެ)ͬb Zʹ޴j)9Žsb9JŬjŔ)ՃsՋսJkZ\*6j]*6_XYh" w" Z" [" mʷ@NrXEIY[\[u[SzW̽¾^TVZĹnƼPUĸQลM߯ඬ|s๨}JR]߶~v{~MytkpڀxOmqwol mmNmNmmOmmmmmmmmUmmXSh }wK*OKMOtM7jw.p M*.p M{M*!m GmMmmA\}D=ArK*Ka N:wK*KR GmLmmRQg /wK*NKLNL7ww.K L*!.K LcQ'L*( GmP2 +-P- GmW}z--P GkI\*6#H:]*6_XYh" w" Z" [" mG@Ic>v>$V/Ӧ>$>$ڀ>$cҘN$u' ΦS<Ęҋ/,S$v6z+jSccSSI>NcjcjjvSSccjvIIIISIIII>>?>SSSSII>cĮcS/'>>/ScjjS//3vڋ''$>vvS'vVc'-3ڀ$'$ٸj  / IIv  v''vc'> '%Ě lI!)j~3f €ct 2>"%23<3 2:B)2  '-  :BMa  u m@?yfR|mgZWNDECB:78430++-*zxrkhda\ZVTLLKHGEDECB><;8899987545341232/01..-./-.,.+--,-*-)*++*++)))*)**()))'))((('((&'''('''%'%&&%%~{wvld_WPG=>:660)''&&&&&%%%$$$$$######"""mPmmm]wfW  ]P3W˅ҽҽҽҽҽu)ҽҽ|;|;mmzmmFmmmwmmmm@mCmmmmmmmpmmmmmmmmmmmmmnmmmm^mmjmmmmsmmtmmmmmmmmrmmumme2 Qe%Ne7Dwe*e2e  Gm[mmNmbmmimmummomm`mmyi}Pi%Mi7Cwi*i}i  GmmmmmmmMmmmmmGmm n  GmIe2 " Gmqms mQmOmmKmmmCmmRmmDmmVmWmXmYmZm\mvmm#Uo z5hoo ?rh*No local player!(qrh*Local player has no HUD!(\o a ]h\gU\pV\jW\mX\nYh w \oo aZ(' Gm{z vq{!m/za0 v{pv9pNzv #O10( GmhmmJ} O GmI\n *\a Gm|`bH/' GmmmZad\4' GmmmmmgaH m rg* :p?wapEwprj?raj}rjm?samsmn?tantna awra>agst9?g[ 9?gC  GmK}R.rq*/}a0 qK--10Mwq*} u q( Gmjz i GmmmS @ I Gm~mmEA %-'-E' GmE RME!m/a0 BELBE MQ10( GmS|E9:9:$ /a0 CACSR10 GmBmms}-%-\ GmmmLqF -"1'7%p9V has no Actions!' Gm_x 69:x9:$ut xJu_/x a9 ~|~B u$$10( GmDclass VolumeTrigger extends Triggers; event Trigger( Actor Other, Pawn EventInstigator ) { local Volume V; if ( Role < Role_Authority ) return; ForEach AllActors(class'Volume', V, Event) V.Trigger(Other, EventInstigator); } m~mtnx @vT~o؂ud Smm`// ==================================================================== // ScriptedHudOverlay: Used by Action_DrawHUDMaterial to draw a // material on the local player's HUD during a matinee sequence // ==================================================================== class ScriptedHudOverlay extends HudOverlay; var Material HUDMaterial; var float PosX, PosY, Width, Height; simulated function Render(Canvas C) { local float X, Y, W, H; if (HUDMaterial == None) return; if (PosX <= 1.0) X = C.ClipX * PosX; else X = PosX; if (PosY <= 1.0) Y = C.ClipY * PosY; else Y = PosY; if (Width <= 1.0) W = C.ClipX * Width; else W = Width; if (Height <= 1.0) H = C.ClipY * Height; else H = Height; C.DrawColor = class'HUD'.default.WhiteColor; C.SetPos(X, Y); C.DrawTile(HUDMaterial, W, H, 0, 0, HUDMaterial.MaterialUSize(), HUDMaterial.MaterialVSize()); } ms^t @^o =w_*`_r_*^!I ^!J `!K yy^!L ^!M !w@ v !r *`!r yyr_*0^!O `!P yV^!Q `!R yy^!S `!T ` GmA class ACTION_Use extends ScriptedAction; function bool InitActionFor(ScriptedController C) { local Actor A; local Vehicle DrivenVehicle; C.bChangingPawns = true; DrivenVehicle = Vehicle(C.Pawn); if( DrivenVehicle != None ) { DrivenVehicle.KDriverLeave(false); C.bChangingPawns = false; return false; } ForEach C.Pawn.VisibleCollidingActors(class'Vehicle', DrivenVehicle, 500) { DrivenVehicle.UsedBy(C.Pawn); C.bChangingPawns = false; return false; } // Send the 'DoUse' event to each actor player is touching. ForEach C.Pawn.TouchingActors(class'Actor', A) A.UsedBy(C.Pawn); if ( C.Pawn.Base != None ) C.Pawn.Base.UsedBy( C.Pawn ); C.bChangingPawns = false; return false; } m@myNN 20{6B.**}L**h}L***hʁ)**h*hʁ)**mmDclass ACTION_SubTitles extends ScriptedAction; var() SceneSubtitles.ESST_Mode SubTitleMode; function bool InitActionFor(ScriptedController C) { C.Level.GetLocalPlayerController().myHUD.SubTitles.ProcessEvent( SubTitleMode ); return false; } function string GetActionString() { return ActionString; } m x~9I 9V_ Gm@mm}H{ >KH-G -F-F'Hw_*Hy _ G|Ls 20@;\M.*3} uu)$] SubTitlesmmIclass ACTION_PlayAnnouncement extends ScriptedAction; var(Action) sound Sound; var bool bSoundsPrecached; function bool InitActionFor(ScriptedController C) { local PlayerController P; local name SoundName; if ( C.Level.NetMode == NM_StandAlone ) SoundName = LastMinuteHack_ShipIt( C ); else SoundName = Sound.Name; //log("ACTION_PlayAnnouncement Sound:" @ Sound @ "SoundName:" @ SoundName @ "Title:" @ C.Level.Title @ "Tag:" @ C.Tag @ "C.MyScript.Tag:" @ C.MyScript.Tag ); ForEach C.DynamicActors(class'PlayerController', P) P.QueueAnnouncement( SoundName, 1, AP_Normal); return false; } /* beautiful... */ function Name LastMinuteHack_ShipIt( ScriptedController C ) { local PlayerController LocalPlayer; local name SoundName; LocalPlayer = C.Level.GetLocalPlayerController(); if ( Sound != None ) SoundName = Sound.Name; // MotherShip Hack for Spanish translation (viva Madrid!) if ( Sound == None && C.Tag == 'Play_Intro3' && C.MyScript.Tag == 'Hack_RIP_Epic_MegaCar' ) SoundName = 'MotherShip_intro'; else if ( C.MyScript.Tag == 'Hack_I_Love_Mina' ) { if ( C.Tag == 'Play_Brief4' && LocalPlayer.StatusAnnouncer.GetSound('Junkyard_brief4a') != None ) SoundName = 'Junkyard_brief4a'; else if ( Sound == None ) { if ( C.Tag == 'Play_Brief5' ) SoundName = 'Junkyard_brief5a'; else if ( C.Tag == 'Play_Brief6' ) SoundName = 'Junkyard_brief6a'; else if ( C.Tag == 'Play_Brief7' ) SoundName = 'Junkyard_brief7a'; } } return SoundName; } function string GetActionString() { return ActionString@Sound; } simulated function PrecacheAnnouncer(AnnouncerVoice V, bool bRewardSounds) { if ( !bRewardSounds && !bSoundsPrecached ) { bSoundsPrecached = true; if ( Sound != None ) V.PrecacheSound(Sound.Name); } } A| 20B`._ .VD*3}VD**a*a* u_ .****3}VD* u]play announcementmmmmJkT2 DAa!m/Ta0 Da@7ccD10 Gmoclass ACTION_HealActor extends ScriptedAction; var(Action) name HealTag; var(Action) int HealAmount; var(Action) class DamageType; function bool InitActionFor(ScriptedController C) { local Actor a; if (HealTag != 'None') ForEach C.AllActors(class'Actor', a, HealTag) a.HealDamage(HealAmount, C, DamageType); return false; } EmD 20F\m.*ʁ)= Heal actormmkclass ACTION_FireWeaponAt extends ScriptedAction; var(Action) name ShootTargetTag; var Actor ShootTarget; function bool InitActionFor(ScriptedController C) { if ( ShootTarget == None ) { ForEach C.AllActors(class'Actor',ShootTarget,ShootTargetTag) break; } if ( ShootTarget != None ) C.FireWeaponAt(ShootTarget); return false; } GgV 20HR.**] fire weaponmmLP>Po  L( Gmj//Draw a texture on the local player's HUD class Action_DrawHUDMaterial extends LatentScriptedAction; var(Action) Material HUDMaterial; var(Action) float PosX, PosY, Width, Height; //scaled to screen resolution if <= 1 var(Action) float DisplayTime; var ScriptedHudOverlay Overlay; function bool InitActionFor(ScriptedController C) { local PlayerController PC; PC = C.Level.GetLocalPlayerController(); if (PC == None) { Warn("No local player!"); return false; } if (PC.myHUD == None) { Warn("Local player has no HUD!"); return false; } Overlay = C.spawn(class'ScriptedHudOverlay', PC); Overlay.HUDMaterial = HUDMaterial; Overlay.PosX = PosX; Overlay.PosY = PosY; Overlay.Width = Width; Overlay.Height = Height; PC.myHUD.AddHudOverlay(Overlay); C.CurrentAction = self; C.SetTimer(DisplayTime, false); return true; } function ActionCompleted() { Overlay.Destroy(); } function bool CompleteWhenTriggered() { return true; } function bool CompleteWhenTimer() { return true; } mmm IM (   Gm@mm[U[-f'b.[Xwb*bG ([-f((/[a8 bCbp [[-f(0(10/[ a3 ||p [10?w[*[p [[-f(( GJcZ 20OK8Er]P3*3} u*]P3]P3]P3]P3]P3 uu)**U $>g$>X $L>} $L>~ $?]draw HUD texturemm|mmYclass ACTION_DamageActor extends ScriptedAction; var(Action) name DamageTag; var(Action) int DamageAmount; var(Action) class DamageType; function bool InitActionFor(ScriptedController C) { local Actor a; if (DamageTag != 'None') ForEach C.AllActors(class'Actor', a, DamageTag) a.TakeDamage(DamageAmount, C.Pawn, a.Location, vect(0,0,0), DamageType); return false; } Q]Y 20R0gA.*ʁ)*ʁ)] Damage actormmVmmTmUmbmm[YB!( Gmmm@ C /B* ,C Gmm_cF20\O!.*hn$?E$Bf$?] Play LIPSincmmh// ifdef WITH_LIPSINC class ACTION_WaitForLIPSincAnimEnd extends LatentScriptedAction; function bool CompleteOnLIPSincAnim() { return true; } // endif ]aD20^8Er]Wait for LIPSincAnimEndSmmj// ifdef WITH_LIPSinc class ACTION_PlayLIPSinc extends ScriptedAction; var(Action) name LIPSincAnimName; var(Action) float Volume; var(Action) float Radius; var(Action) float Pitch; function bool InitActionFor(ScriptedController C) { C.Pawn.PlayLIPSincAnim(LIPSincAnimName, Volume, Radius, Pitch); return false; } function string GetActionString() { return ActionString; } // endif mSW 1WSVUT( GmX[B' Gmmm `d   Gm@mmmmemmkmm@mmlNmm@NrmmmNmiNmmmmmunR n G mpgP)6<kg 999kmOg Gmmml//----------------------------------------------------------- // //----------------------------------------------------------- class KarmaBoostVolume extends PhysicsVolume; var() Array< class > AffectedClasses; var() float EntryAngleFactor; // Actor DOT volume direction must be greater than this var() float BoostForce; // Karma force to be applied var() bool bBoostRelative; // If true, boost the actor in the direction of the actor instead of the volume direction simulated event Touch(Actor Other) { local int i; Super.Touch(Other); if (Other != None) { for (i=0; i EntryAngleFactor) ActivateBoost(Other); } simulated function ActivateBoost(Actor Other) { if (bBoostRelative) Gravity = Default.Gravity + (BoostForce * Normal(Other.Velocity)); else Gravity = Default.Gravity + (BoostForce * Vector(Rotation)); } mqoO1N0-lio Ki99 GmjfGkffcwf*e%ce7jYrfejPfce G stN@` 2v_bQ ʁ)ʁ)ʁ)S$333?Emmxmm{mmwatN1r.w*.w-9D9?x Gmuclass KarmaBoostDest extends NavigationPoint placeable; event int SpecialCost(Pawn Other, ReachSpec Path) { if ( (Vehicle(Other) == None) || !Vehicle(Other).bCanDoTrickJumps ) return 10000000; return -0.5 * Path.Distance; } mmzyb|jɢ}Lnwwg"#! dcmK K J D J J d J b J w J J J q J n J \ J x n w J w J h J le 1J y J e J W J i i n J m J x J r i m n u J YJ ] n |n d J S n S b J l J z n he d J h J b n gJ mJ F J o m H n jJ J c J d J X y E w t J F i Yb }n OJ R J } b 2n e n cn Nn kw | w { i {J \ J | J A w C b N b )J B x Px FJ g i wy Gi ix JJ Zw rm p z A w Zb SJ q z mJ fm I z lJ p J k i l n j J nJ z J k b b uw iw Tn yw a b ww e y Zn v y wy hb dJ C J kb Nn Sb qb yn ] n tb F J g J ^ b CJ [ J Y x ox px qx Yb kl ub Rb Gb Eb 2l Xl xJ ] n zb pb Vx Kx zb 2x ~n ^ b 2J G J H x gw En ] b an Hb Gx |x x Lb )x ~b jb E b {y eb l b _ ] ~ x }b ] B z h h Hn ^ e 6l J x Ph [z c x nn Qb Dx `J ` i kJ f n V b CJ t w zb nb Hb A b yb zb @ b z b xz Vz Wn _ b eZd] yb b ^b Cn Iai  n m b H b Cb Gb tw Yb Yb Xb Wb Qb ve ` i x xy FXM HIQUUKf%q_dV]zI@ YB hw} F&U} {aK{ [diC wL G^V} ga waEx TjBCcif} uaE} Tj_ dW sjB?b Q} `[ p0@W p'~~DMGb[} }DM(} \I l |]aKN Z} iM xI GVVae[FtCq  z} GCSWR f@ uE D} RF bi qI} c OW ^7} lbZ |ur Kub[aiG x } GV W} fD v./DZ s{AQ P$} ^"Vm |V K{Z4V jdxWGv Vheau} DmvT'g c } q&4@?} t}DQ S} aw qG ` M\ [O  j(I w"aF~  V} c} s^BW Qoa]} p(X @A P(s^I ny }T L|[hia} xV HQ WO en to} BnqR_`\nm ~j LaZJ ibF xs Gw} Ureucuv D } R;} bdDrrvWfEQjTQQ cQAs@CO Q@`@I o<4~1\rK AoP}_1t n1s }BHMJ&U1[ {L(HEp p'E } M$| ]~ kfzdI%rXm mgsuTC YSV bz oy ~3} Mp]I kj zr GbWq ep to BH%PB&uA&[e A?L N?M ]?N lU} zc JQYEg` uO CF QR  ^} k}R{S KT  Y } f] vO E4]STaUo4[  ~_  K} XYg} wt G`Wg  gS tvF CaQmJo `n~n I  ~} K} [akZIzRo  JI WC{fJza@} o0} 1u O7r  ]7@j7N x} F} VRf} tZj  D} Qbt abfnbn|ns J} WY gWtVC} Rf ba  r] } L} [} j^ z4DtI4_Q}4KN4Z Y4Y g4avU DjiSs  bf} oP N} M?p]S*l^} V]&fF&La&r\&XX&~#} dct@ C} Q} a} q} A} QUa!R p} }'{  MK} ZW ic%y^rlr|rLr\rlr|pLl Zk hrvI FV U?nepSba}<9'p5kW9"BmCd7;tMHobFwU7FQm}QnM^)]H FoUu dass Br Q_ _^l]{k Jj Xi g\v'f D'e Shd aroYlOm_mo}^ ~Y LX ZU jk x|EP SW apX~`&MpscmCOuphP 4eebiJjP 4Ss[dFlP 4kjP 4TUU~iP 4IguP 4XpP 4T3HP 4~3\gP 4yZW~SP 4FQRGWwP 4y^yfWyP 4n}Akk{P 4{VWeQ}P 4\vP 4ZR'P 4Q lSi}P 4Wf>p}P 4_=m(jLP 4EviR{P 4] M[~j^h-wC3vP 4TiDb}c~_P 4A]P 4r^eXPeh _3pmgN]P 4Ckh|nyg2VjP 4A@J PAmeg`4Q,cEh hwM vwiEP 4tS{-GP 4o tgcfseCh SiNaMCoP 4TrgfFP 4Vl2cBjDe)/iyeXP 4\}kDYP 4Z]BwCFP 4XUhfmP 4VSlDiCBm)HoP 4ZwmDQP 4VU yDk nDo P 4Ls ox Kmw P 4Td p~x P 4Vv h L qx[ P 4PS G`c rDC .G ru oE P 4FT jfZ }27@ })rw s~i }VIg P 4Cp h s }p{A P 4X| uTT kfh P 4TN lfb P 4PH x~X P 4VV ll P 4\X q)t })] QF P 4JW Fra P 4ZS Grm P 4\_ nf{ hUa rv oF JrV P 4RH P 4`Z o`z KfZ '2-@ '@m rm o} 'N4L r@ oP P 4T_ pls P 4N_ qfm P 4IS r|\ P 4GX k_ rJ oZ P 4bi -K rx oH .W rE oU Lfd P 4ZJ Nrd sNV P 4Od tNs P 4ZA P 4F[ Sxa P 4RY pk r[ urk Ur] cO P 4r VTq P 4KE WNP P 4P^ `rn !P 4J` axj hfb $P 4LH brT E3F 'P 4Jy cDC )P 4LG dDS 2wW k(N +mv +mF +lU +Me +tu +h D k(U 2m} 2mM 2l\ 2Ml 2t| 2h K :P 4P\ erl <P 4}^ f|[ >P 4@W g`W @P 4}w hNt BP 4TB QrV MP 4VH EP 4Z^ Plx GP 4Vd Olz IP 4Xf Nl~ KP 4Tj Mr~ RP 4Jp vrz EIl Eb{ Eh J HeX Ll} TP 4bi x~K VP 4RI Kx[ EDS eP 4TW V$k YT O cP 4R] +ko \h Z 1i ^h Z H2i `h [ Qpj {~Z bh X Jrg JIY iP 4Vb kP 4Nx |`F KJf Irp jh b xwp msP 4Xg mB mh N vP 4S^ @`q zP 4`Q <dPq HNA xP 4EO G|T <nhP Brx <PJj P 4It r} oM <)Y\ <Cqu FNf <*6t <xDj P 4n <L&m E<^RS Ie P 4ft h Z <`h GxH <P#@ <;,c <j0O P 4b R;a Hx\ y$T z&x BU5^ 7#S @M=v P 4ds |5aW X3x Irk EN] {9&k x?}Q P 4@N D|N P 4`J Jxj P 4ob CdQ P 4Bu P 4=w P 4g#t qZ[ Tu P 4VI A2_ NQ Kr_ oQ {2` NR P 4^` o~ J2M Q LrP oB K2Q `C P 4Zc o} NcL Mxo og L2v )Ih _q P 4PP o` Q_o 8gN P 4pu Nre @JW } ah qP 4G*h FP 4l Th @<{NOTIh ]P 4;lP 4}gN\d~G@P 4OG}kVP 4BA h C|YQPHj'crP 4Uh T '&bh H{OVP 4peb$LWUzClh o$2~P 4Aph qQB!BAP 4KCh NyX\P 4Gt]{P 4Z Xh rx_@>_RT]h q +h j 6xP 4Rnh @P 4pNww~ ]uTTRh fP 4`u 4Uh Iv]WQt P 4VEh [ P 4Wjmm/AUDph tuLBP 4ZNP 4\hwDtA{h | +Kh vK.kDP 4N ojc'}h ddWrsBIXxKP 4CrqB P 4Rs#h E-P 4eSh xYDFs Jh Y%P 4Pgh w_TEh Y)P 4Hgh o`f}} cpsh Bq}Ph M1P 4A [h \p[j4P 4NE^h SArbh T7P 4KboTm#%A8} f8h v -D;h qXF'=h fW]xtCP 4P lOP 4N|?h JnjYEP 4{CmH~JP 4L F~A&RGh x#nFlCtIh w}B&ELh k^&/ylrhNh ZRP 4Kikqt}B'eSh L^&AZZP 4R[Uh m -|Xh ij}wgP 4Ht^P 4|#x{iNs]h AbP 4MO#C\hQ_ah p~A'~dh e^&/smfbfh HkP 4IW[X.`nNNjh \nP 4O jgFy#zvP 4Dyoh }|H'Krh r -@th mf{#Sz4P 4DMwh QUS)_zh HYa'V|h }P 4c K#>neMlh y|H'Gh nZ\'|h c -qh ^P 4L ldXxKPP 4T[h oc}~P 4Y{bTTP 4IhSqP 4SDh WaqeoNV4bdP 4KrP 4R}`~Oz^MP 4`kP 4l K h wqxE_]}P 4ZZP 4ctrxWh O 4-]h JJ0XP 4PHh XI_0fs~VHDlT^h@^ hh wP 4m EK.4rP 4Vf -|h i]fwP 4Q]K.An\yo`J'hh O 4]h Qy~_K.A]P 4h^`J'Fh mP 4Q{zlLKx4ZpCh sP 4kAJlYrvh h -vh cbL&qW Wh gP 4L vXxB9zP 4Gsh z 6Hh ~P 4@L{NLP 4JZ@rd~VWXTh l -zh gP 4}uvGrP 4Fyh VsN v-Ah nP 4`|TU\G~qnjoP 4`Yh ySeHP 4bm n+Oh zReHP 4JmIxwP 4IobQxMNIh W b-eh R^H`P 4^hh FP 4ZTQ|nZ5jNx_h W Zheh MP 4t\P 4`PPCpRWsO~Jh H P 4BWO\Y P 4euJvZNP h OP 4f ^M|DE9@P 4\yh U E-ch PP 4V^LUtCcI!P 4Qlh } C2Kh }R~KP 4^IS~g7[eKx@ h x$P 4@ FJFF'P 4GL1P 4ZSHTm1NA+P 4>O(h MGf\-P 4=BFM  1-L.h y-.GT~u0h s}3h {EDIuM:P 4=B7h DjM FwP 4N};h K -Y>h FHToP 4P\@h lHC zEW HHE GWHP 4X^Eh vD |D] D@\ PDgL TVQ dRQ sVjBRjPl ^Vi lgh x{Rh sAg}PBVh Rgg Aa20b}/Rk PAj DQ} Uv eW Fu} {F Ky Z} h] xJgGo WyQ fu t]f BVSQ b]gp Q aM]X \]} k} y]U I{ X{ gx vw Ey SI a| p} 2WO} fn vI D} Tad} to D}YTI mb |I L@[z ii wb En "V2#xt [b ir y\ GYU} dYtoCrSs cf sU CgQX _} m~ {h I#OXwgh ^}#mIn .P|H'~h eZ\'sh Zs h]H tw_kz &Jh p@ $~mDbA 0s[cS~h Q'}+`h KF NYBgP 4Pih yx mH]P 4lut yaP 4M Zh gN SvP 4PI -Yh F{ \Ts [pP 4UK| t`cgTJJ2RcP 4{uD pP 4woV AfOgP 4vvh l &zh `YnZ [Gh bP 4eqY TVIjf xEEnS} aB&qh W<CCeh hFWvP 4tMD~AP 4vBuXB&wh ] &kh QQ _rmr}QMV[UjW{TISWrfruR1DPLuUAP 4xQOVIGn_NEMrReba_sP 4ARh Sb~a